如何在选择 Amqp/RabbitMQ 队列之前 'check' (Spring AMQP)

How to 'check' before picking off the Amqp/ RabbitMQ Queue (Spring AMQP)

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

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

我知道我可以在接收到单个消息后对其进行重试,但如果我知道它已关闭,我什至不想接收它。 我不想在 DLQ 中处理数千条消息。

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

额外信息: SpringBoot 应用程序,使用 spring amqp.

进入 RabbitMQ

提前致谢

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

如果您使用的是离散容器,则可以 stop/start 容器 bean。

如果您使用 @RabbitListener,请提供 id 属性并连接到 RabbitListenerEndpointRegistry bean。

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