条件:
1)使用hibernate事务管理器 2)队列被标记为事务性 3)使用与spring-amqp捆绑在一起的SimpleMessageListenerContainer来触发消息的使用者。
场景:
由于某些意外错误导致hibernate事务回滚,并且消息要重新排队,因此消费者会生成异常。这是由容器处理的。
由于SimpleMessageContainer的编写方式,我无法找到从队列中删除消息的方法。让平台事务管理器回滚。频道&事务管理器都回滚或操作通过。
我想做的是通过填充消息上的字段将消息标记为异常失败,这样当它返回到另一个消费者时,我可以使用AOP建议分析消息的状态,然后重新路由留言给另一个交易所。
我似乎无法改变消息的正文,或添加标题来标记rabbitmq中的消息。每次消息重新出现时都是原始消息。
我如何标记邮件?
在回滚交易时,其他人如何设法解决异常消息的重新路由?
答案 0 :(得分:0)
有一个名为“x-dead-letter-exchange”的队列参数,用于指定交换,如果消息被拒绝或过期,将重新发布消息。