我是一名Java开发人员。我已经在 WAS 8.0.0.10 中创建了队列连接工厂和队列,以便连接到 IBM MQ。我想测试超时场景,因此,我特意关闭了 IBM MQ。大约需要 2-3 分钟才能获得预期的超时结果。我想减少超时值,但是,我找不到任何配置。
我可以知道是否可以配置超时值?因为我尝试了几乎所有的超时配置,但没有一个有帮助。谢谢。
这取决于您尝试配置的超时。
可以通过将Connect_Timeout
值设置为希望连接等待初始 TCP 连接的秒数来配置初始连接的 TCP 连接超时。 例如,如果服务器关闭,或者与服务器的网络连接关闭,这将适用。 如果服务器已启动并可通过网络访问,并且只有 MQ 侦听器(或所有 MQ)被关闭,则服务器对 MQ 侦听器端口连接的响应将立即为"连接被拒绝",并且您永远不会遇到 TCP 连接超时。
您可以通过多种方式设置Connect_Timeout
,其中两种是:
-
TCP 节中的 mqclient.ini 文件(请参阅客户机配置文件的位置),例如:
TCP: Connect_Timeout=30
-
传递与上述等效的 java 系统属性,例如:
-Dcom.ibm.mq.cfg.TCP.Connect_Timeout=30
如果您正在寻找如何设置与 MQ 的现有连接的超时,有几点需要注意:
缺省情况下,IBM MQ 客户机/队列管理器在通道空闲时发送检测信号消息。对于 JMS MQ 客户机,如果没有其他流量通过该通道,则SVRCONN
通道的HBINT
将定义发送检测信号消息的间隔(以秒为单位)。
通常,客户端应始终启动 HB,队列管理器将响应。如果队列管理器在 +5 秒内未收到 HB 请求HBINT
那么它将向客户机发起 HB 并期望得到响应。
HBINT
对于小于 60 秒的HBINT
和HBINT
+ 60 对于超过 60 秒的HBINT
。SVRCONN
上的默认HBINT
为 300,因此与具有默认HBINT
的通道的 MQ 连接的超时为 360 秒。你提到 2 - 3 分钟,我怀疑如果你在手表上计时,它会是 6 分钟。
如果要将超时设置为 30 秒,则可以将SVRCONN
通道HBINT
更改为 15 秒,例如:
ALTER CHL(CHL.NAME) CHLTYPE(SVRCONN) HBINT(15)
请注意,该值仅在下次与通道建立客户端连接时生效,不会影响已运行的通道的 HBINT。
其他说明是,当连接到 MQ 队列管理器 v6 或更早版本时,客户机 HB 消息仅在客户机处于带有 WAIT 的 GET 操作中时发送,而不是在其他时间发送。