3

客户端详细信息:作为生产者将消息推送到 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 周的随机时间段后,客户端开始失败并出现上述错误。更多细节:

  • 通过重新启动 IIS 池或重新加载应用程序来解决该错误
  • 当第一个客户端(IIS 服务器 1)继续出现问题时,从另一个客户端(IIS 服务器 2)连接到同一 MQ 服务器继续工作

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

4

2 回答 2

1

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

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

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

于 2018-08-07T16:48:22.243 回答
1

根据@JoshMc 的建议,我们注意到在 AMQERR01.LOG 文件中访问 NAS 上的 AMQCLCHL.TAB 文件时出现间歇性错误。这似乎弄乱了我们端的非托管客户端,只能通过重新启动 IIS 来修复。我们的设置已更新为将此文件移动到服务器上的本地磁盘,然后将我们的代码指向它。这解决了这个问题,自从做出这个改变以来,我们在过去两周里一直很强大,没有出现任何问题。

于 2018-08-22T15:16:02.123 回答