2013-06-12 153 views
1

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

它将引发原因代码 - 2085-消息-CompCode:2,原因是:2085

队列和队列管理器正在使用MQ簇连接。

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

我试图把一个测试消息,使用amqsput.exe它工作得很好。

有什么想法?

回答

4

这一呼吁:

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); 
+0

谢谢,我可以在末尾添加MQC.MQOO_OUTPUT如下所示,而不是删除其他条目(以便这将适用于本地和群集队列)? mqQueue = mqQueueMgr.AccessQueue(“queue name”,MQC.MQOO_FAIL_IF_QUIESCING | MQC.MQOO_INPUT_SHARED | MQC.MQOO_BROWSE | MQC.MQOO_OUTPUT); – Sharpeye500

+0

不会。如果您添加MQC.MQOO_OUTPUT,它仍会失败。您必须删除INPUT_SHARED和BROWSE选项。要从群集队列应用程序获取消息,必须将其连接到承载群集队列的队列管理器。 – Shashi

+0

谢谢,它是否适用于本地和集群队列? – Sharpeye500

0

尝试

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

把消息发送到MQ