我目前正在使用MQ .NET程序集,并试图为监视应用程序读取各种队列的队列深度。我们的代码是用Java编写的,但是我们的新应用程序是用C#编写的,最好将所有这些逻辑保存在同一个应用程序中。MQ .NET程序集MQC.USER_ID_PROPERTY忽略?
从我所听说网上,.NET程序集忽略MQC.USER_ID_PROPERTY
,而使用谁正在运行应用程序的用户ID。是否真的没有办法来覆盖这个?这似乎是一个非常奇怪的功能/错误。我知道MQC.TRANSPORT_PROPERTY
应该影响UserID
的推导方式,但是我是否设置为MQC.TRANSPORT_MQSERIES_MANAGED
或MQC.TRANSPORT_MQSERIES_CLIENT
,我在Wireshark中看到相同的ID,并返回相同的错误(MQRC_NOT_AUTHORIZED
)。有没有人找到解决这个相当大的问题的解决方法?
properties = new Hashtable();
properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);
properties.Add(MQC.HOST_NAME_PROPERTY, hostName);
properties.Add(MQC.PORT_PROPERTY, port);
properties.Add(MQC.CHANNEL_PROPERTY, channelName);
properties.Add(MQC.USER_ID_PROPERTY, userId);
properties.Add(MQC.PASSWORD_PROPERTY, "");
// create connection
queueManager = new MQQueueManager(queueManagerName, properties);
谢谢Shashi的建议。这是基于我正在运行的程序集/客户端的版本还是服务器上的MQ版本? MQ版本是7.05,我无法控制,但在客户端,我使用8.0.0.4,并且问题仍在发生。 – tangelotangeloyo
您需要MQ v8队列管理器才能正常工作。 – Shashi
那么,这是一个无赖。但是,谢谢你终于为我解决这个问题!看起来我会用Java来做这件事。 – tangelotangeloyo