当前位置: 首页 > 知识库问答 >
问题:

RabbitMQ-关闭空闲/悬空通道

东方和志
2023-03-14

我有一个多线程应用程序,它将传入的消息发布到rabbitmq交换。使用rabbitmq java客户端,我在应用程序启动时创建一个rabbitmq连接,并在所有线程之间共享它。每个线程都创建一个新通道(threadlocal),这样通道就不会像rabbitmq文档所建议的那样在多个线程之间共享。我正在使用netty,我看到相同数量的rabbitmq通道被创建为netty通道管道线程。到目前为止还不错。

但是,我有2分钟的保持活动时间在我的网络线程(我需要这个,不能改变它)。因此,如果一个线程空闲2分钟,它就会死亡。但是,与线程关联的通道不会被杀死,而是保持空闲状态,直到连接关闭。因此,我会得到一个越来越多的空闲且从未关闭的通道列表。我在rabbitmq文档中没有看到任何关于悬空通道问题的内容。有没有办法让我关闭一个闲置了一段时间的频道?如果没有,解决这个问题的最佳方案是什么?

共有1个答案

东方栋
2023-03-14

实际上,没有办法从Web控制台关闭通道,因为通道绑定到连接。因此,您可以做的是转到连接选项卡,单击连接(它与通道的id相同,因此很容易识别),然后在打开的页面上单击强制关闭

 类似资料:
  • 文件系统负责将空闲块分配给文件,因此它必须跟踪磁盘中存在的所有空闲块。 主要有两种方法,使用它们管理磁盘中的空闲块。 1. 位向量 在这种方法中,空闲空间列表被实现为位图向量。 它包含每个位代表每个块的位数。 如果该块为空,则该位为1,否则为0。最初,所有块都是空的,因此位图向量中的每个位都包含1。 随着空间分配的进行,文件系统开始为文件分配块并将各个位设置为。 2. 链接列表 这是空闲空间管理的

  • 我正在使用Knex.js来处理与数据库的连接。我正在尝试防止连接池破坏空闲的连接。 我的配置是这样的 然而,我仍然不断得到 在一段时间不活动后。 据我所知,当足够的时间过去时,应该将连接从池中丢弃。因此,如果连接有一段时间没有使用(这就是我的情况),池中将没有连接,我尝试的第一次调用将失败,并出现给定错误。随后的调用顺利进行(直到新的超时) 我的问题是——如何防止这种情况? 编辑 在我的应用空闲一

  • Heroku WORKER Dyno(在python环境中运行)在30分钟后进入睡眠状态。工作人员执行芹菜期任务计划,向用户发送电子邮件。 下面是显示实际行为的日志: 根据研究,我的理解是dyno进入睡眠状态,但是dyno不会睡眠。https://devcenter.heroku.com/articles/free-dyno-hours: 如果一个应用程序有一个免费的网络dyno,并且dyno在3

  • 在最新的版本(1.0.0-pre1)中,gRPC 引入了 Channel 的空闲模式(idle mode)。 工作方式(初步) 在 InUseStateAggregator 中,控制 Channel (准备)进入空闲模式和退出空闲模式: final InUseStateAggregator<Object> inUseStateAggregator = new InUseStateAggregato

  • 想改进这个问题吗 通过编辑此帖子,添加详细信息并澄清问题。 我想进行联调。我目前的方法: 我放置了@AutoConfigreMockMvc,但MockMvc对象仍然为空

  • 我有一个在wildfly 8.1下运行的应用程序,应用程序中使用的数据库连接来自standalone中定义的数据源。xml文件。 问题:我不知道为什么,但池中的连接从不空闲,并且会被释放。最终,池被填满,所有活动连接和应用程序开始抛出 同时,当我查看数据库时,大多数连接显示为空闲。(配置和结果输出如下) 我已经做了一个星期了,还没能找出这个问题的根本原因。我还检查了所有创建连接的地方,并确保它们在