我将我们的应用程序升级到MQ7(7.5.0.5),并且在我编写的小型测试应用程序中看到了一些奇怪的行为。
我的应用程序使用Springs CachingConnectionFactory,并配置为仅使用一个线程。
我可以看到通过代码2调试创建了tcp连接,一个用于初始连接,另一个用于JMS会话。每60秒,我的消息接收器使用的2个tcp连接断开,并替换为2个新连接。
队列管理器上的错误日志中存在以下错误。
05/16/2016 09:38:26 AM - Process(1609.14) User(mqm) Program(amqrmppa)
Host(xxxxxxxxx) Installation(Installation1)
VRMF(7.5.0.2) QMgr(xxxxx)
AMQ9271: Channel 'XX.XXXX.X' timed out.
EXPLANATION:
A timeout occurred while waiting to receive from the other end of channel
'XX.XXX.X'. The address of the remote end of the connection was '57.4.4.145'.
ACTION:
The return code from the (recv) [TIMEOUT] 60 seconds call was 0 (X'0').
Record these values and tell the systems administrator.
我的频道上有以下设置:DISCINT(60),SHARECNV(1),异常与DISCINT时间相关联,更改会改变异常的频率,也是 异常消失,SHARECNV值> 1
任何人都可以告诉我为什么即使频道处于活动状态并且正在发送和接收消息,连接也会被破坏?
谢谢!
答案 0 :(得分:0)
这听起来像APAR IV62728,它描述了您所看到的症状:
http://www-01.ibm.com/support/docview.wss?rs=171&uid=swg1IV62728
已在7.5.0.6中修复。尝试升级到该级别,看看它是否解决了问题。
答案 1 :(得分:0)
我设法找到了解决这个问题的方法。将CachingConnectionFactory与基础IBM连接工厂一起使用时,将在停止状态下创建初始连接。然后,该连接用于创建JMSSessions。
问题在于最初的常见连接是超时的。
我设法通过将HBINT值调整为5来保持连接处于活动状态。看来需要进行多次热保护以保持连接打开,并且我的初始值20太高。