Esempio n. 1
0
        public Task Publish(string messageTypeIdenfifier, byte[] @event, IOutboxSession outbox, MessageMetaData metaData = null)
        {
            metaData = metaData ?? new MessageMetaData();
            var endpoint = MessagingMap.FindEndpoint(messageTypeIdenfifier);

            return(Dispatch(new WrappedCommand(messageTypeIdenfifier, @event), metaData, endpoint, outbox));
        }
Esempio n. 2
0
        public Task Send(string messageTypeIdenfifier, byte[] command, IOutboxSession outbox, MessageMetaData metaData = null)
        {
            metaData = metaData ?? new MessageMetaData();
            var endpoint = MessagingMap.FindEndpoint(messageTypeIdenfifier);

            _setReplyTo(endpoint, null, metaData);
            return(Dispatch(new WrappedCommand(messageTypeIdenfifier, command), metaData, endpoint, outbox));
        }
Esempio n. 3
0
        /************ Message Dispatching ***********/

        public Task Send(IIntegrationCommand command, IOutboxSession outbox, MessageMetaData metaData = null)
        {
            metaData = metaData ?? new MessageMetaData();
            var endpoint = MessagingMap.FindEndpoint(command);

            _setReplyTo(endpoint, command, metaData);
            return(Dispatch(command, metaData, outbox));
        }
Esempio n. 4
0
        public MessageDispatcherTests(MessageDispatcherTests.Fixture fixture)
        {
            this._fixture           = fixture;
            this.FakeServiceFactory = A.Fake <IServiceFactory>();
            this.FakeOutboxSession  = A.Fake <IOutboxSession>();
            this.FakeEndpoint       = A.Fake <IEndpoint>();
            var fakeOutbox = A.Fake <IOutbox>();

            this.MessagingService = new MessagingService(fakeOutbox, this.FakeServiceFactory, null, null);
        }
Esempio n. 5
0
 public MessagingClient(MessagingService messagingService, IOutboxSession outbox)
 {
     _messagingService = messagingService;
     _outbox           = outbox;
 }
Esempio n. 6
0
        public Task Dispatch(IIntegrationMessage message, MessageMetaData metaData, IEndpoint endpoint, IOutboxSession outboxSession = null)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }
            if (endpoint == null)
            {
                throw new ArgumentNullException(nameof(endpoint));
            }

            OutboundMessagePipeline messagePipeline = null;

            if (_endpointOutboundPipeline.ContainsKey(endpoint))
            {
                messagePipeline = _endpointOutboundPipeline[endpoint];
            }
            else
            {
                messagePipeline = new OutboundMessagePipeline(endpoint.Settings.OutboundIntegrationFilters, endpoint.Settings.OutboundTransportFilters);
                _endpointOutboundPipeline[endpoint] = messagePipeline;
            }
            var resultContext = messagePipeline.Process(new IntegrationMessageFilterContext(message, metaData, endpoint, FilterDirection.Outbound, null));

            if (outboxSession != null)//dispatch through the outbox
            {
                OutboxDispatchOptions options = new OutboxDispatchOptions()
                {
                };
                if (metaData != null)
                {
                    if (metaData.DispatchDelay.HasValue && !endpoint.SupportsDelayedDispatch)
                    {
                        options.Delay = metaData.DispatchDelay;
                        options.SkipTransientDispatch = true; // for safety because we set delay
                    }
                    else
                    {
                        options.SkipTransientDispatch = metaData.SkipTransientDispatch;
                    }

                    options.ExpiresAtUtc = metaData.ExpiresAtUtc;
                }
                return(outboxSession.Dispatch(message.MessageType, resultContext.TransportMessage.Data, resultContext.TransportMessage.MetaData, endpoint, options));
            }
            //dispatch to the endpoint
            return(DispatchCore(message.MessageType, resultContext.TransportMessage.Data, resultContext.TransportMessage.MetaData, endpoint));
        }
Esempio n. 7
0
        public Task Dispatch(IIntegrationMessage message, MessageMetaData metaData = null, IOutboxSession outbox = null)
        {
            var endpoint = MessagingMap.FindEndpoint(message) ??
                           throw new ApplicationException($"Unable to dispatch message. Type: {message.GetType()} Message Type: {message.MessageType}");

            return(Dispatch(message, metaData, endpoint, outbox));
        }
Esempio n. 8
0
 internal Task Reply(IIntegrationReply reply, IEndpoint endpoint, IOutboxSession outbox, MessageMetaData metaData = null, MessageMetaData commandMetaData = null)
 {
     metaData = metaData ?? new MessageMetaData();
     metaData.PopulateForReplyTo(commandMetaData);
     return(Dispatch(reply, metaData, endpoint, outbox));
 }
Esempio n. 9
0
        public Task Publish(IIntegrationEvent @event, IOutboxSession outbox, MessageMetaData metaData = null)
        {
            var endpoint = MessagingMap.FindEndpoint(@event);

            return(Dispatch(@event, metaData, outbox));
        }