Палец вверх 2
Перевод
Перевод

Откат транзакции RabbitMQ и сообщение о перенаправлении

условия:

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

сценарий:

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

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

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

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

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

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

rabbitmq spring-amqp
задан user1011782 29 февр. 2012 г., 3:56:42
источник

1 ответ

Палец вверх 0
Перевод
Перевод

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

ответ дан jgarciad 27 мар. 2013 г., 22:05:23
источник