繁体   English   中英

将消息放在群集队列中

[英]Placing message on clustered queue

我们正在尝试将消息放置在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);

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

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

收到2085另一个原因是,如果您尝试为INPUTGET )打开群集队列。 您只能OUTPUTPUT )到不位于本地队列管理器集群队列。 如果从openOptions删除CMQC.MQOO_INPUT_AS_Q_DEF ,它应该可以解决您的问题。 与您的问题无关,优良作法是始终包含CMQC.MQOO_FAIL_IF_QUIESCING这将允许队列管理器正常关闭,并且不会由于正在连接的进程而CMQC.MQOO_FAIL_IF_QUIESCING

int openOptions = CMQC.MQOO_FAIL_IF_QUIESCING | CMQC.MQOO_OUTPUT;

您可以使用以下命令来确认所连接的队列管理器是否也知道其部分存储库中的该队列及其所属的集群以及托管在哪个集群队列管理器上的信息:

DIS QC(clustered_queue_name_here) CLUSTER CLUSQMGR

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM