具有集群队列的IBM MQ问题

无法将消息放入远程队列管理器上的群集队列。 我正在使用MQGetMessageOptions和MQPutMessageOptions。 我使用7.5 MQ服务器和客户端(7.5.0.1)

它抛出原因码 – 2085-消息-CompCode:2,原因:2085

队列和队列管理器使用MQ群集连接。

mqQueue = mqQueueMgr.AccessQueue("queue name", MQC.MQOO_FAIL_IF_QUIESCING | MQC.MQOO_INPUT_SHARED | MQC.MQOO_BROWSE); 

我尝试使用amqsput.exe发送测试消息,它在那里工作正常。

有什么想法吗?

这个电话:

 mqQueue = mqQueueMgr.AccessQueue("queue name", MQC.MQOO_FAIL_IF_QUIESCING | MQC.MQOO_INPUT_SHARED | MQC.MQOO_BROWSE); 

打开群集队列以获取消息。 要获取消息,应用程序必须连接到本地队列管理器。 本地队列管理器表示应用程序连接到的队列管理器。 队列管理器可以与应用程序位于同一台计算机上,也可以位于不同的计算机上。 无法从远程队列管理器获取消息。 当应用程序连接到群集中的其他队列管理器而不是承载群集队列的队列管理器时,可以将消息放入群集队列。

AMQSPUT有效,因为它为Put而不是Get打开队列。

因此,要解决您的问题,必须将选项更改为:

 mqQueue = mqQueueMgr.AccessQueue("queue name", MQC.MQOO_FAIL_IF_QUIESCING | MQC.MQOO_OUTPUT); 

尝试

  MQQueue queue = queueManageArg.AccessQueue(queueNameArg, MQC.MQOO_OUTPUT + MQC.MQOO_FAIL_IF_QUIESCING); 

将消息发送给MQ