WebSphere MQ:“对象已打开”。如何强制释放并重新连接?

时间:2016-11-25 12:28:50

标签: ibm-mq

我正在将队列从一个QM迁移到另一个QM。我停止了应用程序读取队列,但我无法控制应用程序。

我想做的是:

  1. 在另一个QM上创建一个具有相同名称的新队列,但在两个QM所属的MQ集群中共享。
  2. 安装将从此新队列中读取的新应用程序。
  3. 删除旧队列,以便由于MQ群集队列位置解析,应用程序放置将开始放入新队列。
  4. 为了使这个工作,我需要停止创建PUT的应用程序,因为它保持旧队列打开(当尝试删除时我有“对象打开”错误)。但是,由于某些SLA限制,有问题的应用程序无法轻易停止。

    我想找到一个强制释放此队列并将其删除的命令,从而强制客户端(应用程序执行PUT)重新连接。或者还有其他方法可以在运行时实现这一目标吗?

1 个答案:

答案 0 :(得分:2)

无法删除具有打开句柄的队列。我建议从应用程序停止连接,然后在应用程序建立新连接之前删除队列。其他选项是停止通道实例,删除队列,然后启动通道实例。但是,对于SVRCONN通道,如果它们使用相同的通道,则会影响其他应用程序。

使用DISPLAY CONN识别连接:

http://www.ibm.com/support/knowledgecenter/SSFKSJ_9.0.0/com.ibm.mq.ref.adm.doc/q086140_.htm

使用STOP CONN停止连接: http://www.ibm.com/support/knowledgecenter/SSFKSJ_9.0.0/com.ibm.mq.ref.adm.doc/q086790_.htm

如果这没有帮助(例如,应用程序可能会在删除队列之前启动新连接),那么您可以尝试STOP CHL。但是,如所示,其他应用程序可能会受到影响,具体取决于它们是使用相同的通道还是使此外,如果您在FASTPATH模式(受信任的侦听器)中运行Channel Process,则无法使用模式FORCE。