【发布时间】:2015-07-08 00:26:33
【问题描述】:
我是 rabbitmq 的新手,正在尝试以下场景
--> 生产者发送消息
--> 消费者收到消息
-- 执行我自己的逻辑
如果逻辑失败 - 重新排队
--> 如果消费者失败(机器宕机)则重新排队消息
我已经使用 Spring rabbitTemplate 实现了基本的发送者
rabbitTemplate.convertAndSend(.....);
对于消费者,我实现了一个消息监听器
public class CustomMessageListener implements MessageListener {
@Override
public void onMessage(Message message) {
//** my own logic**
}
}
并通过spring将其添加到容器中
<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 似乎需要被覆盖。但我不确定如何通过监听器来完成。
【问题讨论】:
标签: spring rabbitmq rabbitmq-exchange spring-rabbit