将消息放在群集队列上

时间:2017-08-22 14:25:41

标签: java ibm-mq

我们正在尝试将消息放在IBM消息群集队列上。当我们将消息放入队列时,将抛出以下错误:

MQJE001: Completion Code '2', Reason '2085'.

当我们尝试在我们的一个队列管理器上的本地队列上放置一条消息时,它工作正常。但是在群集队列上它不起作用。

MQQueue queue = null;
MQMessage mqMessage = null;

MQEnvironment.hostname = settings.getServer();
MQEnvironment.channel = settings.getChannel();
MQEnvironment.port = settings.getPort();

MQQueueManager queueManager = new MQQueueManager(settings.getQueueManager());

int openOptions = CMQC.MQOO_INPUT_AS_Q_DEF | CMQC.MQOO_OUTPUT;

queue = queueManager.accessQueue(settings.getQueue(), openOptions);

有人可以帮我们将消息放在群集队列上吗?

1 个答案:

答案 0 :(得分:2)

MQRC 2085MQRC_UNKNOWN_OBJECT_NAME,这通常意味着您连接的队列管理器无法在本地定义或通过其所属的群集找到此队列。< / p>

获得2085的另一个原因是,如果您尝试为INPUTGET)打开群集队列。您只能OUTPUTPUT)到不在本地队列管理器上的群集队列。如果您从CMQC.MQOO_INPUT_AS_Q_DEF删除openOptions,则应该解决您的问题。与您的问题无关,最好始终包含CMQC.MQOO_FAIL_IF_QUIESCING这将允许队列管理器正常关闭,而不会被正在连接的进程阻止。

int openOptions = CMQC.MQOO_FAIL_IF_QUIESCING | CMQC.MQOO_OUTPUT;

您可以使用以下命令确认您连接的队列管理器是否也知道其部分存储库中的此队列以及它所属的集群以及它所托管的集群队列管理器:

DIS QC(clustered_queue_name_here) CLUSTER CLUSQMGR

部分存储库仅在第一次访问时了解群集队列,因此在您修复openOptions并尝试再次访问它之前,它可能不会显示。