我们正在使用IBM的WebSphere MQ,并且在通过脚本创建管理订阅时遇到问题。其中一个参数期望现有的模型队列,但由于某种原因,我们的环境中缺少它。也许这完全是一个问题,但想知道有没有办法绕过模型队列并创建订阅呢?
我正在看的链接是消息&包含AMQ8464的代码手册部分。
请向下滚动以查看AMQ8464。我想我们错过了Insert_3
,但希望有办法解决这个问题。错误的全文如下:
如果输入的命令是更改或显示,则为订阅 指定不存在。如果输入的命令是复制, 源订阅不存在。如果输入的命令是 创建,系统默认的MQ订阅不存在。
感谢任何想法。
答案 0 :(得分:2)
尝试复制或删除订阅时,可能会抛出此错误,并且找不到预期的现有订阅。由于您尝试定义订阅,因此我们可以假设错误手册中描述的最后一种情况是我们想要的 - SYSTEM.DEFAULT.SUB
不存在。此订阅是在创建QMgr时定义的(假设是WM7的v7.0或更高版本)。有两种方法可以恢复它。
strmqm -c
命令as described here。这将重新定义已手动删除的任何默认系统对象,包括默认订阅。#1工作的原因是WMQ将使用您在DEFINE
命令中提供的任何参数,然后您忽略它查看SYSTEM.DEFAULT.SUB
对象以确定系统本地默认值。如果您提供所有值,那么它就不需要查看默认对象,只需定义您告诉它的任何内容。这意味着您可以定义自己的订阅,或者只需指定所有参数即可定义SYSTEM.DEFAULT.SUB
。以下DEFINE
语句重新创建SYSTEM.DEFAULT.SUB
,而无需使用-c
选项停止并重新启动QMgr:
DEFINE SUB(SYSTEM.DEFAULT.SUB) +
TOPICSTR('') +
TOPICOBJ('') +
DEST('') +
DESTQMGR('') +
PUBAPPID('') +
SELECTOR('') +
USERDATA('') +
PUBACCT(0000000000000000000000000000000000000000000000000000000000000000) +
DESTCORL(000000000000000000000000000000000000000000000000) +
DESTCLAS(PROVIDED) +
EXPIRY(UNLIMITED) +
PSPROP(MSGPROP) +
PUBPRTY(ASPUB) +
REQONLY(NO) +
SUBSCOPE(ALL) +
SUBLEVEL(1) +
VARUSER(ANY) +
WSCHEMA(TOPIC) +
SUBUSER('')