Откат транзакции RabbitMQ и сообщение о перенаправлении - PullRequest
2 голосов
/ 29 февраля 2012

условия:

1) использовать менеджер транзакций в спящем режиме 2) очередь помечена как транзакционная 3) использовать SimpleMessageListenerContainer, который поставляется вместе с spring-amqp, для запуска получателя сообщения.

сценарий:

Потребитель генерирует исключение из-за непредвиденной ошибки, которая приводит к откату транзакции гибернации и помещению сообщения в очередь. Об этом позаботится контейнер.

Из-за способа написания SimpleMessageContainer я не смог найти способ удалить сообщение из очереди и получить откат менеджера транзакций платформы. Либо менеджер каналов и транзакций оба отката, либо операция проходит.

Я подумал о том, чтобы пометить сообщение как неуспешное в исключительной ситуации, заполнив поле в сообщении, чтобы, когда оно возвращается к другому потребителю, я мог проанализировать состояние сообщения, используя рекомендации AOP, а затем перенаправить сообщение другому обмену.

Не могу изменить текст сообщения или добавить заголовок, чтобы пометить сообщение в rabbitmq. Каждый раз, когда сообщение возвращается, оно является оригинальным.

Как я могу пометить сообщение?

Каким образом другим людям удалось решить вопрос о перенаправлении сообщений об исключении при откате транзакции?

1 Ответ

0 голосов
/ 27 марта 2013

Существует аргумент очереди с именем "x-dead-letter-exchange" , который используется для указания обмена сообщениями, которые будут переизданы, если они будут отклонены или истек срок действия.

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