2012-01-13 210 views
3

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

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

如果输入的命令是Change或Display,则指定的订购 不存在。如果输入的命令是复制, 源订阅不存在。如果输入的命令是 Create,系统默认的MQ预订不存在。

感谢您的任何想法。

+0

我重新标记为[标签:WebSphere的MQ]所以它会更容易为人们WMQ找到。 [tag:websphere]标签获取应用服务器管理员和开发人员。 – 2012-01-14 19:58:08

回答

2

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

  1. 手动定义订阅。所有这些工作都需要指定订阅中的所有字段。
  2. 使用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('')