【问题标题】:Unable to connect to MQ using amqmdnetstd.dll无法使用 amqmdnetstd.dll 连接到 MQ
【发布时间】: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 的原因的更多详细信息。

标签: c# ibm-mq


【解决方案1】:

根据 IBM knowladge Center page : Installing IBM MQ classes for .NET Standard 末尾的 cmets。 amqmdnetstd.dllv9.1.4 似乎存在问题 - 发布于 nuget

大多数人似乎通过降级来解决这个问题。这需要您下载以前版本的客户端并将 dll 包含在您的项目中,因为 IBM 仅从 v9.1.4 开始发布到 nuget。

【讨论】:

  • Nuget 包的 9.1.5 版有效,我们一直在生产环境中使用它,没有问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 2023-02-10
  • 1970-01-01
  • 1970-01-01
  • 2020-07-07
相关资源
最近更新 更多