我正在将队列从一个QM迁移到另一个QM。我停止了应用程序读取队列,但我无法控制应用程序。
我想做的是:
为了使这个工作,我需要停止创建PUT的应用程序,因为它保持旧队列打开(当尝试删除时我有“对象打开”错误)。但是,由于某些SLA限制,有问题的应用程序无法轻易停止。
我想找到一个强制释放此队列并将其删除的命令,从而强制客户端(应用程序执行PUT)重新连接。或者还有其他方法可以在运行时实现这一目标吗?
答案 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。