Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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
Java 如何';检查';在提取Amqp/RabbitMQ队列(Spring Amqp)之前_Java_Spring Boot_Rabbitmq_Spring Amqp_Circuit Breaker - Fatal编程技术网

Java 如何';检查';在提取Amqp/RabbitMQ队列(Spring Amqp)之前

Java 如何';检查';在提取Amqp/RabbitMQ队列(Spring Amqp)之前,java,spring-boot,rabbitmq,spring-amqp,circuit-breaker,Java,Spring Boot,Rabbitmq,Spring Amqp,Circuit Breaker,情景: 微服务从RabbitMQ队列中拾取消息,将其转换为对象,然后微服务对外部服务进行REST调用 它将处理成千上万条这样的消息,如果我们知道外部Rest服务已关闭,是否有办法告诉我的消费者不要从队列中拾取消息 我知道我可以在收到一封单独的邮件后重试,但如果我知道它被拒绝了,我甚至不想再收到它。 我不想在DLQ中处理成千上万的消息 而且它感觉像一个断路器设计模式,但我找不到任何具体的例子来说明如何用AMQP实现它 额外信息: SpringBoot应用程序,使用SpringAMQP访问Rabbi

情景: 微服务从RabbitMQ队列中拾取消息,将其转换为对象,然后微服务对外部服务进行REST调用

它将处理成千上万条这样的消息,如果我们知道外部Rest服务已关闭,是否有办法告诉我的消费者不要从队列中拾取消息

我知道我可以在收到一封单独的邮件后重试,但如果我知道它被拒绝了,我甚至不想再收到它。 我不想在DLQ中处理成千上万的消息

而且它感觉像一个断路器设计模式,但我找不到任何具体的例子来说明如何用AMQP实现它

额外信息: SpringBoot应用程序,使用SpringAMQP访问RabbitMQ


提前感谢

您可以停止并启动邮件侦听器容器

如果您使用的是离散容器,那么可以停止/启动容器bean

如果您使用的是
@RabbitListener
,请在
RabbitListenerEndpointRegistry
bean中提供一个
id
属性和连接


然后
registry.getMessageListenerContainer(myId.stop()

好吧,因为您开始的事件是接收消息,所以这似乎不太可能。您可以在计时器上实现对Rest服务的运行状况检查,并在服务关闭时停止消息侦听器?我们使用的是离散容器,这似乎有效。谢谢