我有一个通用的'数据泵'正在运行的是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来修复问题,但事实并非如此。
答案 0 :(得分:3)
RemoteQueueManagerName和RemoteQueueName仅对远程队列有效。我认为这就是你获得2068年的原因.MQOO_BROWSE otpion用于获取消息而不将其从队列中删除。
您可以使用Name
属性获取队列名称,例如
debugQueueInfo = "Queue:" + queueIn.Name;
MQQueue
类没有用于获取队列管理器名称的属性。您必须从MQQueueManager实例获取它。