Механизм обработки исключений NServiceBus и механизм повторных сообщений - PullRequest
3 голосов
/ 15 марта 2010

Мы планируем использовать NServiceBus в нашем приложении для отправки сообщений.В нашем случае каждое сообщение имеет свойство timeToLive, определяющее период времени, в течение которого это сообщение должно быть обработано.

Для случая, если обработка сообщения была неудачной с первой попытки, наш план состоит в том, чтобы переместить его в конкретныйповторное хранение (очередь повторов) и затем повторное сообщение (с некоторыми перерывами между попытками), пока оно успешно обработано или истек timeToLive.

В случае истечения срока действия timeToLive мы планируем регистрировать содержимое сообщенияи откажитесь от сообщения.

На самом деле, это поведение повторения в основном определяется протоколом, который мы реализуем.

Есть ли способы добиться такого поведения с NServiceBus?Я вижу, что неудачные сообщения направляются на конкретный error queue.Можно ли создать отдельную шину, указывающую на очередь ошибок?

1 Ответ

4 голосов
/ 15 марта 2010

Я бы предположил, что у вас есть отдельный процесс, который отслеживает очередь ошибок и выполняет повторные попытки в соответствии с логикой, которую вы описываете. Взгляните на инструмент ReturnToSourceQueue, который поставляется с nservicebus для вдохновения:

http://nservicebus.svn.sourceforge.net/viewvc/nservicebus/trunk/src/tools/management/Errors/ReturnToSourceQueue/NServiceBus.Tools.Management.Errors.ReturnToSourceQueue/Class1.cs?view=markup

У меня есть запись в блоге о том, как обрабатывать сбои, которые также могут дать вам некоторые идеи: http://andreasohlund.net/2010/03/15/errorhandling-in-a-message-oriented-world/

Надеюсь, это поможет!

...