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);
            }
        }
        public async Task Dispatch(BrokeredMessage message)
        {
            var busCommand = await _brokeredMessageFactory.GetBody(message);

            var messageType = busCommand.GetType();

            // There should only ever be a single command handler
            var handlerType = _handlerMap.GetSingleHandlerTypeFor(messageType);

            await Dispatch((dynamic)busCommand, message, handlerType);
        }
Exemple #3
0
        public async Task Dispatch(BrokeredMessage message)
        {
            var busEvent = await _brokeredMessageFactory.GetBody(message);

            var messageType = busEvent.GetType();

            // There should only ever be a single event handler associated with this dispatcher
            var handlerType = _handlerMap.GetSingleHandlerTypeFor(messageType);

            await(Task) Dispatch((dynamic)busEvent, message, handlerType);
        }
        public async Task Dispatch(BrokeredMessage message)
        {
            var busRequest = await _brokeredMessageFactory.GetBody(message);

            var messageType = busRequest.GetType();

            // There should only ever be a single multicast request handler associated with this dispatcher
            var handlerType    = _handlerMap.GetSingleHandlerTypeFor(messageType);
            var dispatchMethod = GetGenericDispatchMethodFor(busRequest);

            await(Task) dispatchMethod.Invoke(this, new[] { busRequest, message, handlerType });
        }
Exemple #5
0
        public async Task <TBusMessageContract> Pop <TBusMessageContract>() where TBusMessageContract : class
        {
            var queueClient = await _queueManager.CreateDeadLetterQueueClient <TBusMessageContract>();

            var result = await queueClient.ReceiveAsync(TimeSpan.Zero);

            if (result == null)
            {
                return(null);
            }

            await result.CompleteAsync();

            return((TBusMessageContract)await _brokeredMessageFactory.GetBody(result));
        }