如何在 WAS 2.0.0.10 中减少队列连接工厂的超时值(默认值为 8.0.0.10 分钟)?



我是一名Java开发人员。我已经在 WAS 8.0.0.10 中创建了队列连接工厂和队列,以便连接到 IBM MQ。我想测试超时场景,因此,我特意关闭了 IBM MQ。大约需要 2-3 分钟才能获得预期的超时结果。我想减少超时值,但是,我找不到任何配置。

我可以知道是否可以配置超时值?因为我尝试了几乎所有的超时配置,但没有一个有帮助。谢谢。

这取决于您尝试配置的超时。

可以通过将Connect_Timeout值设置为希望连接等待初始 TCP 连接的秒数来配置初始连接的 TCP 连接超时。 例如,如果服务器关闭,或者与服务器的网络连接关闭,这将适用。 如果服务器已启动并可通过网络访问,并且只有 MQ 侦听器(或所有 MQ)被关闭,则服务器对 MQ 侦听器端口连接的响应将立即为"连接被拒绝",并且您永远不会遇到 TCP 连接超时。

您可以通过多种方式设置Connect_Timeout,其中两种是:

  1. TCP 节中的 mqclient.ini 文件(请参阅客户机配置文件的位置),例如:

    TCP:
    Connect_Timeout=30
    
  2. 传递与上述等效的 java 系统属性,例如:

    -Dcom.ibm.mq.cfg.TCP.Connect_Timeout=30
    

如果您正在寻找如何设置与 MQ 的现有连接的超时,有几点需要注意:

缺省情况下,IBM MQ 客户机/队列管理器在通道空闲时发送检测信号消息。对于 JMS MQ 客户机,如果没有其他流量通过该通道,则SVRCONN通道的HBINT将定义发送检测信号消息的间隔(以秒为单位)。

通常,客户端应始终启动 HB,队列管理器将响应。如果队列管理器在 +5 秒内未收到 HB 请求HBINT那么它将向客户机发起 HB 并期望得到响应。

超时基于 2*HBINT

对于小于 60 秒的HBINTHBINT+ 60 对于超过 60 秒的HBINTSVRCONN上的默认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 操作中时发送,而不是在其他时间发送。

最新更新