我有一个正在运行的通用“数据泵”是 Windows 服务的一部分;它的一个实例存在于我正在监视的来自 MQSeries 队列的新传入消息的每个队列中。如果 Get 方法失败,我希望能够显示队列的名称,因此我正在尝试构建一个可以在 catch 处理程序中使用的调试变量。我在下面设置 debugQueueInfo 的行上得到了 2068 MQRC_SELECTOR_NOT_FOR_TYPE。
debugLocation = "queueGetName";
debugQueueInfo = "Queue:" + queueIn.RemoteQueueManagerName + ":"
+ queueIn.RemoteQueueName;
debugLocation = "queueGetMessage";
queueIn.Get(mqMessage, mqGetMessageOptions);
如何获取当前队列管理器名称和队列名称?变量 queueIn 的类型是 IMB.WMQ.MQQueue,我使用的是 .NET API。
当队列是对象被构建时,我使用了以下内容:
queueOptions = MQC.MQOO_INPUT_AS_Q_DEF + MQC.MQOO_FAIL_IF_QUIESCING + MQC.MQOO_INQUIRE + MQC.MQOO_BROWSE;
MQQueue mqQueue = qmgr.AccessQueue(mqCloneSpecs.queueName, queueOptions);
根据 2068 错误代码的文档,我认为添加 MQC.MQOO_BROWSE 可能会解决问题,但事实并非如此。