我尝试在Windows服务中实现MQ侦听器,并且我使用了MQ Explorer安装中dotnet文件夹中提供的xms mq使用者示例。我正在使用MQ WebSphere 7.1
如果我在控制台中运行他们的示例解决方案,一切正常。
但是,在我的Windows服务中,它失败了MQ原因码:2063。
我在工厂使用这些设置
cf.SetStringProperty(XMSC.WMQ_HOST_NAME, _queueHost);
cf.SetIntProperty(XMSC.WMQ_PORT, Convert.ToInt32(_queuePort));
cf.SetStringProperty(XMSC.WMQ_CHANNEL, "SYSTEM.DEF.SVRCONN");
cf.SetIntProperty(XMSC.WMQ_CONNECTION_MODE, XMSC.WMQ_CM_CLIENT_UNMANAGED);
cf.SetStringProperty(XMSC.WMQ_QUEUE_MANAGER, _queueChannel);
cf.SetIntProperty(XMSC.WMQ_BROKER_VERSION, 0);
然后这一行似乎失败了
IConnection connection = cf.CreateConnection(null,null);
我不想提供任何用户凭据,这可能吗?
我尝试将CONNECTION_MODE更改为绑定并获取不同的错误。
示例代码是否正常工作,因为我正在运行它,因此它默认使用我的本地凭据?否则我在两者中使用相同的配置。
答案 0 :(得分:1)
MQ XMS客户端正在将登录用户传播到队列管理器,然后QM检查其权限记录以确定该用户是否可以连接以及它可以访问哪些对象。
您可以设置权限记录以允许当前用于运行服务的用户,或者您可以将Windows服务上的登录用户设置为与队列管理器的允许用户匹配,或者在服务器上设置MCAUSER属性用于连接到队列管理器的连接通道,如果使用客户端连接。
在服务器连接通道上设置MCAUSER将允许任何可以连接到该通道的人模拟设置用户,因此应谨慎使用,可能需要设置适当的通道验证记录。
参考文献:
http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.msc.doc/xms_rtrouble_tips.html
https://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mq.sec.doc/q010530_.htm