【发布时间】:2017-02-03 09:48:19
【问题描述】:
我们使用 rebus 和 Sqs 进行消息传递。我们还在每个队列上配置了 Redrive 策略,在 3 次重试后将消息移动到 DeadLetter 队列。 我们有许多处理相同消息类型的处理程序:
public class MessageHandlerA : IHandleMessages<MessageX>
{
public async Task Handle(MessageX message)
{
Console.WriteLine("HandlerA is about of failing");
throw new FileLoadException();
}
}
public class MessageHandlerB : IHandleMessages<MessageX>
{
public async Task Handle(MessageX message)
{
Console.WriteLine("HandlerB finished Ok");
}
}
这里的行为是 rebus 在第一个处理程序失败后中止处理管道。 我们正在使用死信队列。当处理程序引发异常时,消息将进入死信队列(预期行为)。这里的事情是我们想要跟踪哪些处理程序已经处理了消息,哪些处理程序没有处理,以避免在从死信队列重新处理消息后,同一个处理程序处理消息两次。
【问题讨论】:
标签: rebus