spring-boot - DirectMessageListenerContainer:如何处理 RabbitMQ 中的队列删除?
问题描述
我正在使用DirectMessageListenerContainer
来自 RabbitMQ 的数据。以下是我的场景:
我有两个与 RabbitMQ 交互的模块。第一个模块创建和删除队列,而第二个模块DirectMessageListenerContainer
监听 RabbitMQ 中的队列。
每当在 RabbitMQ 中删除任何队列时,都会DirectMessageListenerContainer
开始不断抛出异常并尝试连接到已删除的队列。
我的问题是,有什么方法可以处理异常并对其执行操作?
解决方案
当您删除一个模块中的队列时,您可以安排从容器中的这些队列中取消订阅。看它的方法:
/**
* Remove queue(s) from this container's list of queues.
* @param queueNames The queue(s) to remove.
* @return the boolean result of removal on the target {@code queueNames} List.
*/
public boolean removeQueueNames(String... queueNames) {
ListenerContainerConsumerFailedEvent
您甚至可以通过@EventiListener
在第二个模块中订阅应用程序来执行相同的操作removeQueueNames
。我认为Throwable
应该ListenerContainerConsumerFailedEvent
有一些信息,目前哪些队列不适合使用。
推荐阅读
- kotlin - 嵌套协方差如何在 Kotlin 中工作?
- java - 如何使用 netbeans 将 javafx 添加到 java 15.01 sdk
- c# - 索引未超出范围时的“索引超出范围异常”
- hyperledger-fabric - 链码如何与 go lang 中的多个智能合约组成
- azure - 我创建了 4 个子网并创建了输出值以在一个变量中获取所有子网 id。那么我如何计划检索 2 个值以附加 nics
- android - 如何为 Anroid Project 设置最大目标 API 级别
- tensorflow - Tensorflow 应用程序不再部署到 Heroku:Slug 尺寸太大
- xml - 如何删除单元格并在 Google 表格中重新输入相同的详细信息
- c# - 二维条码 PDF417。使用什么编码或方法可以将两个字节字符拆分为 ASCII 字符?
- swift - RealityKit - 图像识别和处理许多场景