当我调用com.ibm.mq.MQQueue#put(MQMessage,MQPutMessageOptions)
时,它可能会挂起。如何为此方法设置超时?
同样的问题是com.ibm.mq.MQQueue#get(MQMessage,MQGetMessageOptions)
最佳答案
在MQv7.0或更高版本中,使用SHARECNV为1或更高版本的SVRCONN通道,您可以缩短网络导致PUT返回错误所花费的时间,该时间用于Java的IBM MQ类或用于JMS的IBM MQ类。通过将SVRCONN的HBINT设置为较低的值来解决此问题。超时基于HBINT,使用以下公式:
SVRCONN通道上的默认HBINT为300秒,因此最终会导致六分钟的超时。我喜欢将此值设置为较低的值,例如15,这会使您有30秒的超时时间。
当以编程方式或通过JNDI指定连接详细信息时,用于Java的IBM MQ类和用于JMS的IBM MQ类采用在队列管理器的SVRCONN通道上设置的HBINT。
如果您指向通道表Java / JMS,则将使用通道表的CLNTCONN HBINT来,最终的HBINT将是CLNTCONN和SVRCONN之间的最大值。例如,如果将CLNTCONN通道设置为15并将SVRCONN设置为默认值300,则最终HBINT将为300。