我看到一个场景,当应用程序将消息发送到同一服务器上的主题时,消息卡在传输队列中,直到我启动通道或将测试消息(使用“amqsput”)丢弃到队列管理器中消息必须去。在此通道启动或处于运行状态后,放入主题的消息正在正常流动。在没有通道运行的几个小时或一天之后,当应用程序向主题发送消息时,它再次停留在传输队列中,直到我执行上述练习。
这是在群集环境中。 MQv7.0.1.6
为什么即使远程MQ运行正常,消息也必须卡在trasnmit队列中?仅当应用程序将消息发布到主题时才会发生此方案。
答案 0 :(得分:3)
2014年1月23日更新
IBM已回复我的PMR作为IV21703: A WMQ V7 CLUSSDR CHANNEL IS NOT STARTED WHEN PERSISTENT PUB/SUB MESSAGES ARE PUT TO CLUSTERED TOPICS的匹配。
错误说明
When messages are put to cluster queues in syncpoint the cluster
channels are not started until the application calls MQCMIT;
the CLUSSDR channels to all the queue managers which are
destinations for messages put in the Unit of Work are started
during commit processing.
This operation does not appear to be carried out when
publications are put to remote cluster subscriber queues at the
commit of the internal Unit of Work, that is, the cluster
channels associated with the put of the subscriber messages are
not started at that time. The channels are held in the queue
manager's memory associated with the connection, and are
started when the application is disconnected and the connection
is closed.
本地修复
There are 4-
1. Change PMSGDLV to ALLAVAIL
2. Change the messages to non-persistent
3. Change the CLUSRCVR channels to DISCINT(0)
4. Call MQDISC after putting msgs to a clustered topic
修复程序在7.0.1.10和7.1.0.2中,但APAR中未提及7.5。 7.5.0.0及更高版本可以使用临时修复程序。它的目标是包含在2014年第1季度到期的FP7.5.0.3中。
基于群集名称解析的上一个答案证明是完全错误的。这是一个可行的理论,但仍然是错误的。我删除了它。