Мы используем ребус и Sqs для обмена сообщениями. Мы также настроили в каждой очереди политику Redrive, перемещающую сообщения в очередь DeadLetter после 3 попыток. У нас есть много обработчиков обработки однотипные сообщений:Rebus Как узнать, какие обработчики имеют успех и что вызвало исключение, когда сообщение улавливается несколькими обработчиками
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");
}
}
поведения здесь является то, что ребус ликвидирует Handling трубопровода после выходит из строя первого обработчика. Мы используем очередь очереди. Когда обработчик вызывает исключение, сообщение отправляется в очередь с ошибкой (ожидаемое поведение). Дело в том, что мы хотим отслеживать, какие обработчики обработали сообщение и какие обработчики не избегают одного и того же обработчика для обработки сообщения дважды после того, как сообщение переработано из очереди DeadLetter.