Есть ли какие-либо функции, встроенные в spring-amqp, которые упростили бы повторную отправку недоставленных сообщений? Я могу написать код для этого, но это похоже на такой распространенный вариант использования, который хорошо вписывается в структуру.
Запрос недоставленных сообщений
comment
Можете ли вы быть более подробным, чем в вашем комментарии ниже? Существует ли способ установить ограничение на повторное размещение некоторых сообщений? Я имею в виду что-то вроде этого: дайте три шанса для повторной постановки в очередь для каждого сообщения. После трех сообщений отклоните его.
- person   schedule 23.03.2017
Ответы (1)
Это выходит за рамки Spring AMQP, но вы можете настроить TTL для очереди недоставленных сообщений и настроить эту очередь для возврата недоставленных сообщений в исходную очередь по истечении срока ее действия.
Вы можете проверить заголовок x-death
, если хотите полностью отказаться после некоторого количества циклов повторных попыток.
См. >этот ответ и его вопрос для получения дополнительной информации.
person
Gary Russell
schedule
06.07.2015
Гэри, это отлично работает. Сегодня мы достигли чего-то в результате реализации этого, и я подумал, что поделюсь с вами в будущем. У нас был случай в нашей среде разработки, когда MessageListener снова и снова выдавал ошибку. В конце концов мы начали видеть ошибки в RabbitMQ frame_too_large. После исследования мы обнаружили в документации RabbitMQ, что массив добавляется к заголовку x-death, о котором вы упомянули, каждый раз, когда сообщение является мертвым. Поскольку наше решение устанавливает бесконечный цикл, сообщение стало слишком большим и в конечном итоге взорвалось. Будущие читатели, возможно, захотят рассмотреть максимальное количество повторных попыток.
- person Josh Chappelle; 20.01.2016
@JoshChappelle с более новыми версиями брокера заголовок
x-death
содержит только одну запись для каждой посещенной очереди и каждый раз обновляет счетчик, вместо того, чтобы расширять заголовок в каждом раунде.
- person Gary Russell; 25.03.2017
Да, мы обновили нашего брокера, и этой проблемы больше нет. Спасибо, что упомянули об этом.
- person Josh Chappelle; 25.03.2017