Как мне добиться задержки повторной доставки в сервисной шине Azure с помощью amqp с использованием rhea - PullRequest
0 голосов
/ 08 марта 2019

Я использую rhea в приложении nodejs для отправки сообщений по служебной шине Azure с использованием AMQP.Моя проблема заключается в следующем:

Иногда попытка обработки сообщения может быть неудачной из-за чего-то, что не в наших руках.Например, вызов некоторого API может быть неудачным, потому что служба не работает.В этот момент мы разблокируем сообщение, чтобы оно могло быть получено позднее или другим экземпляром.После определенного количества повторных попыток (когда количество доставок достигло определенного максимума) оно просто заканчивается в DLQ.

Чего я хочу добиться, так это того, что между каждой попыткой доставки возникает пауза, увеличивающая количество Xповторных попыток происходит не только в быстрой последовательности, пока не достигнут максимум.Таким образом, я могу дать то, что вызывает сбой, когда-нибудь, чтобы вернуться, если это просто вопрос ожидания, когда какая-то служба снова станет доступной.Если это не сработает, сообщение все равно может пойти в DLQ.

Есть ли какая-то настройка в служебной шине Azure, которая будет этого достигать, или мне придется запрограммировать это в моем собственном приложении?

1 Ответ

0 голосов
/ 18 марта 2019

Если вы явно хотите отложить обработку, вы можете поставить в очередь новое сообщение с помощью набора ScheduledEnqueueTime для более поздней доставки (с помощью функции message.Clone () можно создать клонированное сообщение). У вас также есть возможность вызывать message.Defer (), и вы не будете доставлять это сообщение снова, пока не вызовете Receive (Sequenceid) для этого конкретного сообщения позднее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...