public void HandleCallback(IncomingMessageContext context) { if (context.CorrelationId == Guid.Empty) return; Logger.Debug("Handling callback for message {0} with correlation ID {1}", context.MessageId, context.CorrelationId); BusAsyncResult busAsyncResult; lock (MessageIdToAsyncResultLookup) { MessageIdToAsyncResultLookup.TryGetValue(context.CorrelationId, out busAsyncResult); MessageIdToAsyncResultLookup.Remove(context.CorrelationId); } if (busAsyncResult == null) { Logger.Debug("No callback is registered with correlation ID {0}", context.CorrelationId); return; } int statusCode = 0; if (context.IsControlMessage()) { HeaderValue errorCodeHeader; if (context.TryGetHeaderValue(HeaderKeys.ReturnErrorCode, out errorCodeHeader)) { statusCode = Int32.Parse(errorCodeHeader.Value); } } Logger.Debug("Calling callback for correlation ID {0}", context.CorrelationId); busAsyncResult.Complete(statusCode, context.Message); }