Превышение maxDeliveryAttempts - PullRequest
       23

Превышение maxDeliveryAttempts

0 голосов
/ 29 января 2019

Согласно моему пониманию, значение по умолчанию для maxDeliveryAttempts равно 5?
Даже после явной установки значения 5 в разы я наблюдал, что повторная попытка превысила 5 (до> 10 в последнее время).Конфигурации: SetNumberOfWorkers: 5, SetMaxParallelism: 10, SimpleRetryStrategy (maxDeliveryAttempts: 5, secondLevelRetriesEnabled: true),

Внутри обработчика, если мы не можем обработать сообщение как рекомендацию, предложенную лучше всего, если я явно выброшу исключение, вернуть ноль или просто позволить распространению исключения (в данный момент я перехватываю журнал исключений и перебрасываю то же самое) - может ли это повлиять на поведение?

Я также реализовал IHandleMessages> для ведения некоторой домашней работы.Примечание: использование ребуса с rabbitmq

1 Ответ

0 голосов
/ 29 января 2019

Во-первых, «лучшая практика» с Rebus - позволить исключениям выходить из обработчика и позволить Rebus вести регистрацию.Он будет регистрировать каждую неудачную попытку обработки как ПРЕДУПРЕЖДЕНИЕ, а затем он будет регистрировать все перехваченные исключения как AggregateException как ОШИБКУ при перемещении сообщения в очередь ошибок.

Если вы не включите повторные попытки 2-го уровня:) в этом случае Rebus перейдет ко второму раунду поставок после начальных 5 ПРЕДУПРЕЖДЕНИЙ, отправляя сообщение только как IFailed<TMessage>.

, если последующие пять попыток доставки также не удаются (например, потому что естьнет обработчика, который реализует IHandleMessages<IFailed<YourMessage>>), тогда вы получите дополнительные 5 ПРЕДУПРЕЖДЕНИЙ в журнале, за которыми следует ОШИБКА, когда сообщение, наконец, будет перемещено в очередь ошибок.

Надеюсь, это сделает его более понятным:) дайте мне знать, если я что-то объясню более подробно.

...