首页 > 解决方案 > 如何在选择 Amqp/RabbitMQ 队列(Spring AMQP)之前“检查”

问题描述

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

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

我知道一旦收到一条消息,我可以重试它,但是如果我知道它已关闭,我什至不想再收到它。我不想处理 DLQ 中的数千条消息。

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

额外信息:SpringBoot 应用程序,使用 spring amqp 进入 RabbitMQ。

提前致谢

标签: javaspring-bootrabbitmqspring-amqpcircuit-breaker

解决方案


您可以停止和启动消息侦听器容器。

如果您使用离散容器,您可以停止/启动容器 bean。

如果您正在使用,请在bean中@RabbitListener提供一个id属性和连线。RabbitListenerEndpointRegistry

然后registry.getMessageListenerContainer(myId).stop();


推荐阅读