Запрос недоставленных сообщений

Есть ли какие-либо функции, встроенные в spring-amqp, которые упростили бы повторную отправку недоставленных сообщений? Я могу написать код для этого, но это похоже на такой распространенный вариант использования, который хорошо вписывается в структуру.


person Josh Chappelle    schedule 06.07.2015    source источник
comment
Можете ли вы быть более подробным, чем в вашем комментарии ниже? Существует ли способ установить ограничение на повторное размещение некоторых сообщений? Я имею в виду что-то вроде этого: дайте три шанса для повторной постановки в очередь для каждого сообщения. После трех сообщений отклоните его.   -  person    schedule 23.03.2017


Ответы (1)


Это выходит за рамки Spring AMQP, но вы можете настроить TTL для очереди недоставленных сообщений и настроить эту очередь для возврата недоставленных сообщений в исходную очередь по истечении срока ее действия.

Вы можете проверить заголовок x-death, если хотите полностью отказаться после некоторого количества циклов повторных попыток.

См. >этот ответ и его вопрос для получения дополнительной информации.

person Gary Russell    schedule 06.07.2015
comment
Гэри, это отлично работает. Сегодня мы достигли чего-то в результате реализации этого, и я подумал, что поделюсь с вами в будущем. У нас был случай в нашей среде разработки, когда MessageListener снова и снова выдавал ошибку. В конце концов мы начали видеть ошибки в RabbitMQ frame_too_large. После исследования мы обнаружили в документации RabbitMQ, что массив добавляется к заголовку x-death, о котором вы упомянули, каждый раз, когда сообщение является мертвым. Поскольку наше решение устанавливает бесконечный цикл, сообщение стало слишком большим и в конечном итоге взорвалось. Будущие читатели, возможно, захотят рассмотреть максимальное количество повторных попыток. - person Josh Chappelle; 20.01.2016
comment
@JoshChappelle с более новыми версиями брокера заголовок x-death содержит только одну запись для каждой посещенной очереди и каждый раз обновляет счетчик, вместо того, чтобы расширять заголовок в каждом раунде. - person Gary Russell; 25.03.2017
comment
Да, мы обновили нашего брокера, и этой проблемы больше нет. Спасибо, что упомянули об этом. - person Josh Chappelle; 25.03.2017