【发布时间】:2020-03-19 22:58:39
【问题描述】:
我在使用来自 NuGet 包管理器的 amqmdnetstd.dll 时执行以下代码时遇到异常“MQRC_Q_MGR_NOT_AVAILABLE”。 但是,当我使用 amqmdnet.dll 时,我没有遇到任何异常。 我想坚持使用 amqmdnetstd.dll 的原因是它在 NuGet 包中可用,我可以在任何服务器上部署代码,而不必担心在我部署的每台服务器上安装 IBM Websphere。
string QueueManagerName = ConfigurationManager.AppSettings["QueueManagername"];
Hashtable properties = new Hashtable();
properties.Add(MQC.HOST_NAME_PROPERTY, ConfigurationManager.AppSettings["Connection"]);
properties.Add(MQC.PORT_PROPERTY, ConfigurationManager.AppSettings["PortNo"]);
properties.Add(MQC.CHANNEL_PROPERTY, ConfigurationManager.AppSettings["Channelname"]);
properties.Add(MQC.MQCA_TOPIC_NAME, ConfigurationManager.AppSettings["Queuename"]);
properties.Add(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES_MANAGED);
queueManager = new MQQueueManager(QueueManagerName, properties);
这两个dll的行为有什么不同吗?
【问题讨论】:
-
您能否检查您连接到的队列管理器上的
AMQERR01.LOG并查看是否存在错误。查看在子目录IBM\MQ\data\errors下运行.NET 应用程序主目录的用户,看看您是否找到AMQERR01.LOG,它可能会显示有关您为何获得MQRC_Q_MGR_NOT_AVAILABLE的更多详细信息。 -
@JoshMc 不幸的是,我无法控制队列。我只提供了连接到队列并从中读取所需的队列名称和其他配置。 amqmdnet.dll 工作正常
-
通过队列控制,我假设您是指队列管理器?即使没有控制权,您也可以联系 MQ 管理员并询问他们是否在 AMKERR01.LOG 上看到任何错误。我提供了第二个建议,您可以完全控制它,您能否查看一下是否看到在您自己的机器上创建了任何日志?
-
如果没有注意到,我会再次发布:查看运行 .NET 应用程序主目录的用户在子目录
IBM\MQ\data\errors下,看看是否找到AMQERR01.LOG这可能会显示有关您收到MQRC_Q_MGR_NOT_AVAILABLE的原因的更多详细信息。