首页 > 解决方案 > MQ 错误原因:在 C# .NET 客户端正常工作多天后随机开始出现 2058

问题描述

客户端详细信息:作为生产者将消息推送到 IBM MQ 队列和主题的代码会出现问题。生产者使用 WebApi2 公开为 REST 接口,并部署在 IIS 上。我们正在使用 C# .NET (4.5.2) 客户端连接到 IBM MQ。我们使用 CCDT 文件 AMQCLCHL.TAB 进行连接以获取客户端连接详细信息。使用的底层库是 Apache NMS (1.8.0.4573) 和 IBM XMS (2.5.0.3)。

收到异常: CWSMQ0006E:在调用 ConnectionFactory.CreateConnection 方法期间收到异常:CompCode:2,原因:2058。

错误详细信息:客户端正常工作,我们能够将数十万条消息推送到 MQ 队列和主题。但是,在从几个小时到超过 1 周的随机时间段后,客户端开始失败并出现上述错误。更多细节:

AMKERR01.LOG 文件中出现错误。

AMQ9516: File error occurred.

EXPLANATION: The filesystem returned error code 6 for file'\\...\AMQCLCHL.TAB'. 

ACTION: Record the name of the file '\\...\AMQCLCHL.TAB' and tell the systems administrator, who should ensure that file '\\...\AMQCLCHL.TAB' is correct and available. 

错误代码 6 是ERROR_INVALID_HANDLE

标签: c#.netibm-mqxmsapache-nms

解决方案


当连接关闭时会发生这种情况(可能是远程服务器重启、网络问题等)。这真的让我回味无穷——我记得在 2002 年处理过这个问题,将 Java J2EE 应用程序连接到 OS/390 上的 MQ。

最近 IBM 实现了自动重新连接设置,可以在 CCDT 中设置或在 C# 对象上手动设置。这在XMS 页面上进行了总结,实现文档在此处

客户端重新连接选项、客户端重新连接超时和连接名称列表属性也可以通过客户端通道定义表 (CCDT) 或通过 mqclient.ini 文件启用客户端重新连接来设置。


推荐阅读