Esempio n. 1
0
 private Address[] GetMessageSubscribers(OutgoingMessageContext outgoingMessage)
 {
     var messageTypes = outgoingMessage.GetMessageContracts();
     return subscriptionStorage.GetSubscribersForMessageTypes(messageTypes)
                               .Distinct()
                               .ToArray();
 }
Esempio n. 2
0
        private void PublishMessages(OutgoingMessageContext outgoingMessage, IEnumerable<Address> subscribers)
        {
            TransportMessage message = outgoingMessage.GetTransportMessage();

            foreach (var subscriber in subscribers)
            {
                message.SetMessageId(SequentialGuid.New());
                messageSender.Send(message, subscriber);
            }
        }
Esempio n. 3
0
        public bool Publish(OutgoingMessageContext outgoingMessage)
        {
            var subscribers = GetMessageSubscribers(outgoingMessage);

            if (!subscribers.Any())
            {
                Logger.Debug("No subscribers found for message {0}", outgoingMessage);
                return false;
            }

            PublishMessages(outgoingMessage, subscribers);

            return true;
        }
Esempio n. 4
0
        public void SendMessage(OutgoingMessageContext outgoingMessageContext)
        {
            var currentContext = (IncomingMessageContext)CurrentMessage;

            if (currentContext.Equals(IncomingMessageContext.Null))
            {
                using (var scope = container.BeginLifetimeScope())
                {
                    DispatchOutgoingMessage(outgoingMessageContext, scope);
                }
            }
            else
            {
                EnqueOutgoingMessage(outgoingMessageContext, currentContext);
            }
        }
Esempio n. 5
0
        public void SendMessage(OutgoingMessageContext outgoingMessageContext)
        {
            var currentContext = (IncomingMessageContext)CurrentMessage;

            if (currentContext.Equals(IncomingMessageContext.Null))
            {
                using (var scope = container.BeginLifetimeScope())
                {
                    Logger.Debug("Sending message {0}", outgoingMessageContext);
                    outgoingMessageContext.Process(outgoingPipeline, scope);
                }
            }
            else
            {
                Logger.Debug("Enqueuing message {0}", outgoingMessageContext);
                currentContext.Enqueue(outgoingMessageContext);
            }
        }
 public void Enqueue(OutgoingMessageContext outgoingMessageContext)
 {
     Logger.Debug("Enqueuing outgoing message {0}", outgoingMessageContext);
     outgoingMessages.Enqueue(outgoingMessageContext);
 }
 public override Task InvokeAsync(OutgoingMessageContext context, Func <Task> next)
 {
     throw new NotImplementedException();
 }
Esempio n. 8
0
 private void DispatchOutgoingMessage(OutgoingMessageContext outgoingMessageContext, IServiceLocator scope)
 {
     outgoingMessageContext.SetUserName(Settings.UserNameResolver);
     outgoingMessageContext.Process(outgoingPipeline, scope);
 }
Esempio n. 9
0
 protected virtual void EnqueOutgoingMessage(OutgoingMessageContext outgoingMessageContext, IncomingMessageContext currentContext)
 {
     outgoingMessageContext.SetUserName(currentContext.UserName);
     currentContext.Enqueue(outgoingMessageContext);
 }