0

我正在尝试在 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 更改为绑定并得到不同的错误。

示例代码是否仅因为我正在运行它而起作用,因此默认情况下它使用我的本地凭据?否则我在两者中使用相同的配置。

4

1 回答 1

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

于 2015-07-22T08:09:00.903 回答