Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Spring ampq在rabbitmq中重新查询消息_Spring_Rabbitmq_Rabbitmq Exchange_Spring Rabbit - Fatal编程技术网

使用Spring ampq在rabbitmq中重新查询消息

使用Spring ampq在rabbitmq中重新查询消息,spring,rabbitmq,rabbitmq-exchange,spring-rabbit,Spring,Rabbitmq,Rabbitmq Exchange,Spring Rabbit,我是rabbitmq新手,正在尝试以下场景 ->制作人发送消息 ->消费者收到信息 -执行我自己的逻辑 如果逻辑失败-重新排队 ->如果耗电元件故障指示灯熄灭,请重新输入消息 我已经使用SpringRabbitTemplate实现了基本发送器 rabbitTemplate.convertAndSend(.....); 对于消费者,我实现了一个消息侦听器 public class CustomMessageListener implements MessageListener { @Overri

我是rabbitmq新手,正在尝试以下场景

->制作人发送消息 ->消费者收到信息 -执行我自己的逻辑

如果逻辑失败-重新排队

->如果耗电元件故障指示灯熄灭,请重新输入消息

我已经使用SpringRabbitTemplate实现了基本发送器

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>
在这一部分之前,它工作得很好


现在,如果侦听器中提到的**我自己的逻辑**失败。我想重新询问这个消息。我如何实现这一点。从我浏览过的博客来看,似乎需要覆盖returnedMessage。但我不确定如何通过listener实现

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

感谢您的快速回复。是否有属性或方法可以忽略该消息或在n次尝试后将该消息发送到死信队列。假设n将被指定为侦听器建议链的重试侦听器。使用RejectAndDontRequeueRecoverer配置拦截器,重试次数用尽时将调用该拦截器;如果原始队列是这样配置的,则消息将发送到DLX/DLQ。或者,您可以使用RepubishMessageRecoverer直接重新发布到另一个队列,并提供附加信息,例如异常的堆栈跟踪。有关更多信息,请参阅。默认的恢复只是正常记录和退出,因此只记录和删除消息。