public async Task Dispatch(BrokeredMessage message) { var requestId = Guid.Parse((string)message.Properties[MessagePropertyKeys.InReplyToRequestId]); var responseCorrelationWrapper = _requestResponseCorrelator.TryGetWrapper(requestId); if (responseCorrelationWrapper == null) { return; } var success = (bool)message.Properties[MessagePropertyKeys.RequestSuccessful]; if (success) { var response = await _brokeredMessageFactory.GetBody(message); responseCorrelationWrapper.Reply(response); } else { var exceptionMessage = (string)message.Properties[MessagePropertyKeys.ExceptionMessage]; var exceptionStackTrace = (string)message.Properties[MessagePropertyKeys.ExceptionStackTrace]; responseCorrelationWrapper.Throw(exceptionMessage, exceptionStackTrace); } }
protected override void PumpMessage(BrokeredMessage message) { var correlationId = Guid.Parse(message.CorrelationId); var responseCorrelationWrapper = _requestResponseCorrelator.TryGetWrapper(correlationId); if (responseCorrelationWrapper == null) { Logger.Debug("Could not find correlation wrapper for reply {0} ({1}", correlationId, message.Properties[MessagePropertyKeys.MessageType]); return; } var success = (bool)message.Properties[MessagePropertyKeys.RequestSuccessfulKey]; if (success) { Logger.Debug("Request {0} was successful. Dispatching reply to correlation wrapper.", correlationId); var responseType = responseCorrelationWrapper.ResponseType; var response = message.GetBody(responseType); responseCorrelationWrapper.Reply(response); Logger.Debug("Response {0} dispatched.", correlationId); } else { var exceptionMessage = (string)message.Properties[MessagePropertyKeys.ExceptionMessageKey]; var exceptionStackTrace = (string)message.Properties[MessagePropertyKeys.ExceptionStackTraceKey]; Logger.Debug("Request {0} failed. Dispatching exception to correlation wrapper: {1} {2}", correlationId, exceptionMessage, exceptionStackTrace); responseCorrelationWrapper.Throw(exceptionMessage, exceptionStackTrace); } }
public async Task Dispatch(NimbusMessage message) { if (!message.InReplyToMessageId.HasValue) { _logger.Error($"Received a reply message without an {nameof(NimbusMessage.InReplyToMessageId)} property."); return; } var requestId = (Guid)message.InReplyToMessageId; var responseCorrelationWrapper = _requestResponseCorrelator.TryGetWrapper(requestId); if (responseCorrelationWrapper == null) { _logger.Warn("Received a reply to request {RequestMessageId} that had no corresponding request waiting for it.", requestId); return; } var success = message.Properties[MessagePropertyKeys.RequestSuccessful] as bool? ?? false; if (success) { _logger.Debug("Received successful response"); var response = message.Payload; await responseCorrelationWrapper.Reply(response); } else { _logger.Debug("Received failure response"); var exceptionMessage = (string)message.Properties[MessagePropertyKeys.ExceptionMessage]; var exceptionStackTrace = (string)message.Properties[MessagePropertyKeys.ExceptionStackTrace]; await responseCorrelationWrapper.Throw(exceptionMessage, exceptionStackTrace); } }