rabbitmq - 在销毁之前关闭@RabbitListener 频道
问题描述
我有以下侦听器组件:
@Component
public class Receiver {
@RabbitListener(queues = "fmd-response")
public void receiveMessage(Response response, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long tag) throws IOException {
channel.basicAck(tag, false);
}
@PreDestroy
public void preDestroy() {
}
}
preDestroy()
为了关闭加载组件时自动创建的通道应该放入什么?我需要这个来使用 JRebel 重新加载组件,因为每次重新加载都会创建一个新通道:
127.0.0.1:54916 (1)
guest idle 0 250 0
127.0.0.1:54916 (2)
guest idle 0 250 0
127.0.0.1:54916 (3)
guest idle 0 250 0
127.0.0.1:54916 (4)
guest idle 0 250 0
127.0.0.1:54916 (5)
guest idle 0 250 0
127.0.0.1:54916 (6)
guest idle 0 250 0
解决方案
我不熟悉 JRebel;消费者的通道是长期存在的,当容器停止时会自动关闭()。
重新加载发生时,容器可能没有停止?
打开调试日志以查看容器/消费者/通道的活动。
如果不清楚,请将完整的调试日志发布在 github gist 或 pastebin 之类的地方。
您可以获得对的引用并尝试通过(给出an )RabbitListenerEndpointRegistry
来停止容器 。id
@RabbitListener
id
推荐阅读
- angular - Rxjs 最佳实践:满足条件时执行后端调用
- r - 将混合模型的预测绘制为 R 中的一条线
- mongodb - MongoDb:匹配外国收藏的价值
- kotlin - Kotlin discord jda 无法通过 id 获取消息
- javascript - 无法从 HTML 页面调用 Google WebApps 服务器端函数
- r - R nlsModel 奇异梯度矩阵在初始参数估计误差初始参数估计问题
- python - pandas.read_csv() 返回 ParserError
- reactjs - React 不加载本地 svg
- android - Url Launcher 不适用于 MissingPluginException Flutter
- angular - 访问 FormGroup 的 FormArray 的数据