2017-08-22 103 views
1

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

有人能帮助我们将消息在集群队列?

回答

2

MQRC 2085MQRC_UNKNOWN_OBJECT_NAME通常表示您连接到的队列管理器无法在本地定义或通过它所属的群集找到此队列。

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

int openOptions = CMQC.MQOO_FAIL_IF_QUIESCING | CMQC.MQOO_OUTPUT; 

可以确认,如果你连接太队列管理器知道这个队列中的部分存储库与其一起组成群集是其成员,哪些集群队列管理器它托管与以下命令:

DIS QC(clustered_queue_name_here) CLUSTER CLUSQMGR 

部分存储库只得知群集队列中的第一次访问,因此它可能显示不出来,直至修复openOptions并再次尝试访问它。