New*_*ght 5 multithreading rabbitmq channels netty
我有一个多线程应用程序,它将传入消息发布到Rabbitmq交换。使用rabbitmq java客户端,我在应用程序启动时创建了一个rabbitmq连接,并在所有线程之间共享它。每个线程都会创建一个新通道(threadlocal),以便不按照rabbitmq文档的建议在多个线程之间共享通道。我正在使用netty,并且看到与netty通道管道线程创建的Rabbitmq通道数量相同。到目前为止,一切都很好。
但是,我的netty线程有2分钟的存活时间(我需要这个并且不能更改)。因此,如果线程空闲2分钟,它将死亡。但是,与线程关联的通道不会被杀死,并保持空闲状态,直到连接关闭。因此,我得到了越来越多的空闲通道列表,并且从未关闭过。在rabbitmq文档中没有看到任何有关悬空通道问题的信息。我有办法关闭闲置一段时间的频道吗?如果没有,解决此问题的最佳替代方法是什么?
实际上,由于通道已绑定到连接,因此无法从 Web 控制台关闭通道。所以你可以做的是转到Connections
选项卡,单击连接(它与通道具有相同的ID,因此很容易识别)并在打开的页面上单击Force Close
您可以使用 RabbitMQ 管理 HTTP API 并列出通道,然后在每个通道的详细信息上您可以看到自通道空闲以来的情况,并做出相应的反应,例如关闭通道。
请参阅此处:http://hg.rabbitmq.com/rabbitmq-management/raw-file/3646dee55e02/priv/www-api/help.html
归档时间: |
|
查看次数: |
7586 次 |
最近记录: |