java - 如何在选择 Amqp/RabbitMQ 队列(Spring AMQP)之前“检查”
问题描述
场景:微服务从 RabbitMQ 队列中获取消息,将其转换为对象,然后微服务对外部服务进行 REST 调用。
它将处理成千上万条这样的消息,如果我们知道外部 Rest 服务已关闭,是否有办法告诉我的消费者不要从队列中获取消息?
我知道一旦收到一条消息,我可以重试它,但是如果我知道它已关闭,我什至不想再收到它。我不想处理 DLQ 中的数千条消息。
它也感觉像是一个断路器设计模式,但我找不到任何具体的例子来说明如何用 AMQP 实现它。
额外信息:SpringBoot 应用程序,使用 spring amqp 进入 RabbitMQ。
提前致谢
解决方案
您可以停止和启动消息侦听器容器。
如果您使用离散容器,您可以停止/启动容器 bean。
如果您正在使用,请在bean中@RabbitListener
提供一个id
属性和连线。RabbitListenerEndpointRegistry
然后registry.getMessageListenerContainer(myId).stop();
。
推荐阅读
- c# - 捕获 DllNotFoundException 不使用 Phidget API
- magento2 - 如何在 Magento 2 的 FishPig 中获取当前的 WordPress 类别?
- html - 如何从包含的jsp更改jsp基本页面中body标签的类
- visual-studio-code - 如何通过 VS Code 的 liveshare 共享终端重新加载服务器的更改
- codenameone - Codenameone 如何外部化 Location 对象
- java - Android USB 配件多线程
- python - 在 spyder 中执行张量流
- c - 使用 C 打印指向字符串的指针数组会忽略最后一个字符串
- python - 使用 Python 和 WMI 查询获取正在运行的服务列表
- javascript - 如何在不影响其他元素的情况下将表格放置在页面上?