コード例 #1
0
        public void Execute(OnAfterDeserializeTransportMessage pipelineEvent)
        {
            if (_log.IsVerboseEnabled)
            {
                return;
            }

            var transportMessage = pipelineEvent.Pipeline.State.GetTransportMessage();

            _log.Verbose(string.Format(LoggingResources.TransportMessageDeserialized, transportMessage.MessageType,
                                       transportMessage.MessageId));
        }
コード例 #2
0
        public void Execute(OnAfterDeserializeTransportMessage pipelineEvent)
        {
            var state            = pipelineEvent.Pipeline.State;
            var receivedMessage  = state.GetReceivedMessage();
            var transportMessage = state.GetTransportMessage();
            var workQueue        = state.GetWorkQueue();

            Guard.AgainstNull(receivedMessage, nameof(receivedMessage));
            Guard.AgainstNull(transportMessage, nameof(transportMessage));
            Guard.AgainstNull(workQueue, nameof(workQueue));

            if (!transportMessage.IsIgnoring())
            {
                return;
            }

            using (var stream = receivedMessage.Stream.Copy())
            {
                if (state.GetDeferredQueue() == null)
                {
                    workQueue.Enqueue(transportMessage, stream);
                }
                else
                {
                    state.GetDeferredQueue().Enqueue(transportMessage, stream);

                    _configuration.Inbox.DeferredMessageProcessor.MessageDeferred(transportMessage.IgnoreTillDate);
                }
            }

            workQueue.Acknowledge(receivedMessage.AcknowledgementToken);

            if (_log.IsTraceEnabled)
            {
                _log.Trace(string.Format(Resources.TraceTransportMessageDeferred, transportMessage.MessageId,
                                         transportMessage.IgnoreTillDate.ToString("O")));
            }

            pipelineEvent.Pipeline.Abort();
        }