使用Spring ampq在rabbitmq中重新排列消息

我是rabbitmq的新手,我正在尝试以下方案

- >生产者发送消息
- >消费者收到消息
- 执行我自己的逻辑

如果逻辑失败 - 重新排队

- >如果消费者失败(机器发生故障),请重新排队消息

我使用Spring rabbitTemplate实现了基本发件人

rabbitTemplate.convertAndSend(.....);

而对于消费者我实现了一个消息监听器

public class CustomMessageListener implements MessageListener {
@Override
    public void onMessage(Message message) {
       //** my own logic**
   }
}

并通过弹簧将其添加到容器中

  <bean id="aListener" class="com.sample.CustomMessageListener" autowire="byName"/>

 <rabbit:listener-container id="myListenerContainer" connection-factory="connectionFactory"  acknowledge="auto" prefetch="750" concurrency="5" >
    <rabbit:listener ref="aListener" queues="reportQueue"/>
</rabbit:listener-container>

它的工作正常,直到这部分。

现在如果**我在监听器中提到的逻辑**失败了。 我想重新排列这条消息。 我怎么能实现这一点。 从我经历过的博客来看,似乎需要重写returnMessage。 但我不确定如何通过听众来完成。

采纳答案:

使用acknowledge="auto" ,在收听者正常退出之前,该消息不会被激活,因此您无需做任何额外的事情; 如果您的侦听器抛出异常或服务器崩溃,则该消息将保留在队列中。

author: gary-russell

参考更多解答: requeue the message in rabbitmq using Spring ampq ,转载请保留出处使用Spring ampq在rabbitmq中重新排列消息及作者信息

Statement: We respect knowledge and authors. Since the content comes from the Internet and is intended for scientific research, any reprinters should retain the author's signature and origin. If you are the author of the content and feel in dispute, please contact email: 1076545519@qq.com. We will find out the situation and deal with it in time. We sincerely thank the author for his hard work.


更多:rabbitmq-exchange