Ejemplo n.º 1
0
        public ReceivedMessage GetMessage()
        {
            if (!_journalInitialized)
            {
                CreateJournal();
                ReturnJournalMessages();
            }

            try
            {
                var pipeline = _dequeuePipelinePool.Get(_msmqDequeuePipelineType) ?? new MsmqGetMessagePipeline();

                pipeline.Execute(_parser, _timeout);

                _dequeuePipelinePool.Release(pipeline);

                var message = pipeline.State.Get <Message>();

                return(message == null ? null : new ReceivedMessage(message.BodyStream, new Guid(message.Label)));
            }
            catch (Exception ex)
            {
                _log.Error(string.Format(Resources.GetMessageError, _parser.Path, ex.AllMessages()));

                throw;
            }
        }
        public void ReleasePipeline(MessagePipeline messagePipeline)
        {
            Guard.AgainstNull(messagePipeline, "messagePipeline");

            _pool.Release(messagePipeline);

            messagePipeline.Released();
        }