2012-02-28 30 views
2

條件:的RabbitMQ回滾事務並重新路由消息

1)使用休眠事務管理器 2)隊列被標記爲事務 3)使用自帶束帶有彈簧AMQP的SimpleMessageListenerContainer一樣來觸發的消費者信息。

情形:

消費者生成異常由於一些意想不到的錯誤導致休眠事務回滾,並且該消息被重新排隊。這由容器照顧。

由於SimpleMessageContainer的寫入方式,我找不到從隊列中刪除消息的方法,並且&有平臺事務管理器回滾。通道&事務管理器都回滾或操作通過。

我想做的是通過在消息中填充一個字段來標記消息在異常上的失敗,以便當它返回給另一個消費者時,我可以使用AOP建議分析消息的狀態,然後重新路由該消息給另一個交易所。

我似乎無法改變消息的正文,或者添加一個標題來標記rabbitmq中的消息。每次消息返回時都是原來的消息。

如何標記消息?

在回滾事務時,其他人如何設法解決異常消息的重新路由?

回答

0

有一個隊列參數名爲「x-dead-letter-exchange」用於指定交換,如果這些交換被拒絕或過期,它們將被重新發布。