Inheritance: MessageException
 public void Create_Empty()
 {
     var e = new PoisonMessageException();
     Assert.Equal(e.Message, "Exception of type 'DotNetWorkQueue.Exceptions.PoisonMessageException' was thrown.");
     Assert.Null(e.HeaderPayload);
     Assert.Null(e.MessagePayload);
 }
 /// <summary>
 /// Invoked when we have dequeued a message, but a failure occurred during re-assembly.
 /// </summary>
 /// <param name="context">The context.</param>
 /// <param name="exception">The exception.</param>
 public void Handle(IMessageContext context, PoisonMessageException exception)
 {
     if (context.MessageId != null && context.MessageId.HasValue)
     {
         _commandMoveRecord.Handle(new MoveRecordToErrorQueueCommand((RedisQueueId)context.MessageId));
     }
     context.MessageId = null;
 }
        /// <summary>
        /// Invoked when we have dequeued a message, but a failure occurred during re-assembly.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="exception">The exception.</param>
        public void Handle(IMessageContext context, PoisonMessageException exception)
        {
            Guard.NotNull(() => context, context);
            Guard.NotNull(() => exception, exception);

            if (context.MessageId == null || !context.MessageId.HasValue) return;

            var messageId = (long)context.MessageId.Id.Value;
            _commandMoveRecord.Handle(
                new MoveRecordToErrorQueueCommand(exception, messageId, context));
            context.MessageId = null;
        }
 /// <summary>
 /// Invoked when we have dequeued a message, but a failure occurred during re-assembly.
 /// </summary>
 /// <param name="context">The context.</param>
 /// <param name="exception">The exception.</param>
 public void Handle(IMessageContext context, PoisonMessageException exception)
 {
     if (context.MessageId != null && context.MessageId.HasValue)
     {
         var messageId = context.MessageId.Id.Value.ToString();
         _handler.Handle(context, exception);
         _log.ErrorException(
             "Message with ID {0} has failed after de-queue, but before finishing loading. This message is considered a poison message, and has been moved to the error queue",
             exception,
             messageId);
     }
     else
     {
         _handler.Handle(context, exception);
     }
 }
 public void Create_HeaderPayload(byte[] header)
 {
     var e = new PoisonMessageException("error", Substitute.For<IMessageId>(), Substitute.For<ICorrelationId>(), null, header);
     Assert.Equal(header, e.HeaderPayload);
 }
 public void Create_MessagePayload(byte[] message)
 {
     var e = new PoisonMessageException("error", Substitute.For<IMessageId>(), Substitute.For<ICorrelationId>(), message, null);
     Assert.Equal(message, e.MessagePayload);
 }
 public void Create_Inner()
 {
     var e = new PoisonMessageException("error", new Exception(), Substitute.For<IMessageId>(), Substitute.For<ICorrelationId>(), null, null);
     Assert.Equal(e.Message, "error");
     Assert.NotNull(e.InnerException);
 }
 public void Create_Format()
 {
     var e = new PoisonMessageException(Substitute.For<IMessageId>(), Substitute.For<ICorrelationId>(), null, null, "error {0}", 1);
     Assert.Equal(e.Message, "error 1");
 }
 /// <summary>
 /// Invoked when we have dequeued a message, but a failure occurred during re-assembly.
 /// </summary>
 /// <param name="context">The context.</param>
 /// <param name="exception">The exception.</param>
 public void Handle(IMessageContext context, PoisonMessageException exception)
 {
     _handler.Handle(context, exception);
     _meterError.Mark();
 }