定义WebSphere MQ管理订阅

时间:2012-01-13 18:02:11

标签: ibm-mq

我们正在使用IBM的WebSphere MQ,并且在通过脚本创建管理订阅时遇到问题。其中一个参数期望现有的模型队列,但由于某种原因,我们的环境中缺少它。也许这完全是一个问题,但想知道有没有办法绕过模型队列并创建订阅呢?

我正在看的链接是消息&包含AMQ8464的代码手册部分。 请向下滚动以查看AMQ8464。我想我们错过了Insert_3,但希望有办法解决这个问题。错误的全文如下:

  

如果输入的命令是更改或显示,则为订阅    指定不存在。如果输入的命令是复制,   源订阅不存在。如果输入的命令是   创建,系统默认的MQ订阅不存在。

感谢任何想法。

1 个答案:

答案 0 :(得分:2)

尝试复制或删除订阅时,可能会抛出此错误,并且找不到预期的现有订阅。由于您尝试定义订阅,因此我们可以假设错误手册中描述的最后一种情况是我们想要的 - SYSTEM.DEFAULT.SUB不存在。此订阅是在创建QMgr时定义的(假设是WM7的v7.0或更高版本)。有两种方法可以恢复它。

  1. 手动定义订阅。完成此操作所需的只是指定订阅中的所有字段。
  2. 使用strmqm -c命令as described here。这将重新定义已手动删除的任何默认系统对象,包括默认订阅。
  3. #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('')