public void Receive()
        {
            var currentContext = _contextManager.Current;
            var context = new ReceiveMessageContext(currentContext) { MessageBrokerType = this.GetType() };

            _azureReceiveMessageChain.Receive(context);
        }
        public void Handle(ReceiveMessageContext context)
        {
            var messageBrokers = _messageBrokerManager.GetReceivers();

            foreach (var messageBroker in messageBrokers)
            {
                messageBroker.Receive();
            }
        }
        public void Handle(ReceiveMessageContext context)
        {
            // todo get rid of reflection, cache it?
            IMessageEnvelop messageEnvelop;
            if (!context.TryGetMessageEnvelop(out messageEnvelop)) return;

            var handlers = _messageBrokerManager.GetHandlers(messageEnvelop.MessageType, context.MessageBrokerType);

            context.MessageHandlerContainers = new List<IMessageHandlerContainer>();
            context.MessageHandlerContainers.AddRange(handlers);

            // todo don't continue the chain if we didn't find the handler
        }
        public void Handle(ReceiveMessageContext context)
        {
            var brokeredMessage = _subscriptionClientWrapper.Client.Receive();

            // todo 1341 should we continue the Receive chain if message is not found?
            if (brokeredMessage == null) return;

            var messageEnvelop = MessageEnvelop.FromBrokeredMessage(brokeredMessage);

            // todo 1341 Complete() should be done after successful processing
            brokeredMessage.Complete();
            context.MessageEnvelop = messageEnvelop;
        }
        public void Handle(ReceiveMessageContext context)
        {
            IMessageEnvelop messageEnvelop;
            if (!context.TryGetMessageEnvelop(out messageEnvelop)) return;

            var message = messageEnvelop.Message;

            foreach (var messageHandlerContainer in context.MessageHandlerContainers)
            {
                var handlerInstance = messageHandlerContainer.Instance;
                try
                {
                    messageHandlerContainer.Invoke(handlerInstance, message);
                }
                catch (Exception exception)
                {
                    //_logger.Error("Error handling message:");
                    //_logger.Error(exception);
                }
            }
        }