WebSphere MQ:"Object is open"。如何强制释放并重新连接?
WebSphere MQ: "Object is open". How to force the release and reconnect?
我正在将队列从一个 QM 迁移到另一个。我停止了读取队列的应用程序,但我无法控制放入队列的应用程序。
我想做的是:
- 在另一个QM 上创建一个同名的新队列,但在两个QM 所属的MQ 集群中共享。
- 安装将从这个新队列中读取的新应用程序。
- 由于 MQ 集群队列位置解析,删除旧队列以便放入的应用程序开始放入新队列。
为此,我需要停止应用程序进行 PUT,因为它使旧队列保持打开状态(尝试删除时出现 "Object is open" 错误)。但是,由于某些 SLA 限制,无法轻易停止有问题的应用程序。
我想找到一个命令来强制释放此队列并将其删除,从而强制客户端(执行 PUT 的应用程序)重新连接。或者有没有其他方法可以在运行时实现这个?
无法删除具有打开句柄的队列。我建议停止与应用程序的连接,然后在应用程序建立新连接之前删除队列。其他选择是停止通道实例,删除队列,然后启动通道实例。但是,对于 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
如果这没有帮助(例如,应用程序可能会在删除队列之前启动新连接),那么您可以尝试停止 CHL。然而,正如所指出的那样,其他应用程序可能会受到影响,具体取决于它们使用相同的通道还是不同的通道。此外,如果您 运行 通道进程处于 FASTPATH 模式(受信任的侦听器),则无法使用模式 FORCE。
我正在将队列从一个 QM 迁移到另一个。我停止了读取队列的应用程序,但我无法控制放入队列的应用程序。
我想做的是:
- 在另一个QM 上创建一个同名的新队列,但在两个QM 所属的MQ 集群中共享。
- 安装将从这个新队列中读取的新应用程序。
- 由于 MQ 集群队列位置解析,删除旧队列以便放入的应用程序开始放入新队列。
为此,我需要停止应用程序进行 PUT,因为它使旧队列保持打开状态(尝试删除时出现 "Object is open" 错误)。但是,由于某些 SLA 限制,无法轻易停止有问题的应用程序。
我想找到一个命令来强制释放此队列并将其删除,从而强制客户端(执行 PUT 的应用程序)重新连接。或者有没有其他方法可以在运行时实现这个?
无法删除具有打开句柄的队列。我建议停止与应用程序的连接,然后在应用程序建立新连接之前删除队列。其他选择是停止通道实例,删除队列,然后启动通道实例。但是,对于 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
如果这没有帮助(例如,应用程序可能会在删除队列之前启动新连接),那么您可以尝试停止 CHL。然而,正如所指出的那样,其他应用程序可能会受到影响,具体取决于它们使用相同的通道还是不同的通道。此外,如果您 运行 通道进程处于 FASTPATH 模式(受信任的侦听器),则无法使用模式 FORCE。