集群队列的IBM MQ问题

本文关键字:MQ 问题 IBM 队列 | 更新日期: 2023-09-27 18:18:02

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

抛出原因码- 2085- message - compcode: 2, reason: 2085

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

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

我试着用amqsput.exe放一个测试消息,它在那里工作得很好。

任何想法吗?

集群队列的IBM MQ问题

这个调用:

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

Try

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

将消息发送到MQ