我有一个C#服务,它使用IBM提供的.Net MQ接口库从WebSphere MQ队列读取消息,将它们发送到另一个应用程序进行处理,然后将响应写入另一个队列。
当我连接到响应队列时,我有下面显示的表单代码(现场的MQ设计人员告诉我,我应该总是使用响应队列管理器的相同句柄作为请求队列管理器)
QueueName变量在请求消息中设置为ReplyTo Queue名称(如果存在)或默认值(如果缺少)。
var ResponseQueueManager = RequestQueueManager;
var ResponseQueue = ResponseQueueManager.AccessQueue(QueueName,
MQC.MQOO_OUTPUT,
ResponseQueueManager.Name,
null,
null);
如果响应队列名称不是群集队列,则一切正常。但是,如果我尝试写入集群环境,那么当我执行写操作时,MQ32环境会抛出一个UNKNOWN_OBJECT_NAME错误,尽管我知道队列名称是有效的。我是否需要在AccessQueue调用上设置其他属性?
我设法从同一个队列管理器上的队列中读取确定,所以我不明白为什么我要回写到集群环境中同一个队列管理器下的队列。