【问题标题】:RabbitMQ rollback transaction and re route messageRabbitMQ 回滚事务并重新路由消息
【发布时间】:2012-02-28 23:56:42
【问题描述】:

条件:

1) 使用休眠事务管理器 2) 队列被标记为事务性 3)使用与 spring-amqp 捆绑的 SimpleMessageListenerContainer 来触发消息的消费者。

场景:

消费者由于某些意外错误而生成异常,导致休眠事务回滚,并且消息被重新排队。这由容器负责。

由于 SimpleMessageContainer 的编写方式,我找不到从队列中删除消息并让平台事务管理器回滚的方法。通道和事务管理器要么都回滚,要么操作通过。

我想做的是通过在消息上填充一个字段来将消息标记为异常失败,这样当它返回给另一个消费者时,我可以使用 AOP 建议分析消息的状态,然后重新路由消息到另一个交易所。

我似乎无法更改消息的正文,或在rabbitmq 中添加标头来标记消息。每次返回的消息都是原始消息。

如何标记消息?

其他人如何在回滚事务的同时解决异常消息的重新路由问题?

【问题讨论】:

    标签: rabbitmq spring-amqp


    【解决方案1】:

    有一个名为 "x-dead-letter-exchange" 的队列参数用于指定交换,如果消息被拒绝或过期,将重新发布消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多