IBM MQ:即便有多个JMS会话,CONNS与 CURSHCNV显示相同的数值
我在努力理解如何验证IBM MQ中的物理连接与逻辑连接。我的理解是:
- 物理连接 → 指向队列管理器的TCP连接
- 逻辑连接(会话) → JMS会话(或MQ对话)
场景1(JMS)
- 创建了 1个 JMS连接
- 从该连接创建了 5个会话
场景2(MQ基本API)
- 创建了 5个
MQQueueManager实例(独立连接)
使用的命令
检查连接:
DISPLAY QMSTATUS CONNS
检查对话(等同于会话):
DISPLAY CHSTATUS(SYSTEM.DEF.SVRCONN) CURSHCNV
问题
在这两种场景中,我看到CONNS与 CURSHCNV的数值相同,例如:
CONNS(5)
CURSHCNV(5)
预期行为
对于JMS场景,我的预期是:
CONNS(1)
CURSHCNV(5)
因为只有一个物理连接且有多个会话。
额外背景
- 使用JMS API来创建会话
- 也使用MQ基本API进行测试(
MQQueueManager) - MQ Web控制台(UI)功能有限,无法清晰显示连接与会话的细节
问题
- 为什么即使从单个JMS连接创建了多个会话,CONNS与 CURSHCNV显示相同的值?
- JMS客户端实际上是在创建多条物理连接吗,还是在对会话进行复用?
-
验证的正确方法是什么:
-
物理TCP连接 的数量
- IBM MQ中 逻辑会话(对话) 的数量?
通道配置(例如SHARECNV-10)
解决方案
一个JMS连接会产生一个MQCONN。
一个JMS会话会产生一个MQCONN。
多个MQCONN可以在一个物理TCP/IP套接字上共享。
使用CONNS或 CURSHCNV来统计MQCONN的数量。
使用CHSTATUS来统计物理TCP/IP套接字的数量。
共享与JMS连接上的JMS会话无关,共享由通道上的MAXSHCNV设置控制。如果把该值降到2,你会看到多个CHSTATUS,每个状态显示2 个共享会话通过各自的连接进行传输。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。