首页 文章

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

提问于
浏览
2

我是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 . 但我不确定如何通过听众来完成 .

1 回答

  • 4

    使用 acknowledge="auto" ,消息赢得't be ack' d直到侦听器正常退出,因此您无需执行任何额外操作;如果您的侦听器抛出异常或服务器崩溃,则消息将保留在队列中 .

相关问题