Ejemplo n.º 1
0
        public void Execute(OnDispatchTransportMessage pipelineEvent)
        {
            var state                    = pipelineEvent.Pipeline.State;
            var transportMessage         = state.GetTransportMessage();
            var transportMessageReceived = state.GetTransportMessageReceived();

            if (transportMessageReceived != null)
            {
                try
                {
                    if (_idempotenceService.AddDeferredMessage(transportMessageReceived, transportMessage,
                                                               state.GetTransportMessageStream()))
                    {
                        return;
                    }
                }
                catch (Exception ex)
                {
                    _idempotenceService.AccessException(_log, ex, pipelineEvent.Pipeline);
                }
            }

            Guard.AgainstNull(transportMessage, nameof(transportMessage));
            Guard.AgainstNullOrEmptyString(transportMessage.RecipientInboxWorkQueueUri, "uri");

            var queue = !_configuration.HasOutbox
                ? _queueManager.GetQueue(transportMessage.RecipientInboxWorkQueueUri)
                : _configuration.Outbox.WorkQueue;

            using (var stream = state.GetTransportMessageStream().Copy())
            {
                queue.Enqueue(transportMessage, stream);
            }
        }
Ejemplo n.º 2
0
        public void Execute(OnDispatchTransportMessage pipelineEvent)
        {
            var state            = pipelineEvent.Pipeline.State;
            var transportMessage = state.GetTransportMessage();
            var receivedMessage  = state.GetReceivedMessage();

            Guard.AgainstNull(transportMessage, nameof(transportMessage));
            Guard.AgainstNull(receivedMessage, nameof(receivedMessage));
            Guard.AgainstNullOrEmptyString(transportMessage.RecipientInboxWorkQueueUri, "uri");

            var queue = _queueManager.GetQueue(transportMessage.RecipientInboxWorkQueueUri);

            using (var stream = receivedMessage.Stream.Copy())
            {
                queue.Enqueue(transportMessage, stream);
            }
        }