2013-04-02 2 views
1

В настоящее время я использую ActiveMQ для своей системы очередей, и я хочу сделать переход на RabbitMQ. Одна из возможностей, которую я использовал, которая принадлежит ActiveMQ, - это политика переопределения, так как иногда наш потребитель отклоняет сообщение, потому что он не может справиться с этим в настоящее время, но может захотеть повторить попытку позже, поэтому он запрашивает его.Как установить политику переопределения в RabbitMQ/AMQP

Прямо сейчас в AMQP, когда я отклоняю сообщение, он мгновенно сразу же отключился от очереди и попытался снова.

Есть ли способ в RabbitMQ указать политику переопределения для очереди, потребителя или сообщения?

ответ

1

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

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

+0

В версии, которую я использую, которая, как я считаю, является последней, их API обеспечивает способ отклонения сообщения и либо его переуступку, либо отправку в DLQ. В настоящее время мне нравится DLQ как очередь повтора, но я привык к решению ActiveMQ, где вы можете в основном активировать повторную попытку. – Nicholas

Смежные вопросы