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(); }