客户详细信息:与作为生产者将消息推入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周的随机时间后,客户端开始失败并出现上述错误。更多细节:
在AMQERR01.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
。
答案 0 :(得分:1)
关闭连接时会发生这种情况(可能是远程服务器重新启动,网络问题等)。这确实让我回想起-我记得在2002年将Java J2EE应用程序连接到OS / 390上的MQ时就进行了处理。
最近,IBM已实现了自动重新连接设置,可以在CCDT中设置或在C#对象上手动设置。在XMS page和the documentation for implementing that is here上进行了总结。
还可以通过客户端通道定义表(CCDT)或通过mqclient.ini文件启用客户端重新连接来设置属性“客户端重新连接选项”,“客户端重新连接超时”和“连接名称列表”。
答案 1 :(得分:1)
基于@JoshMc的建议,我们注意到与AMQERR01.LOG文件中访问NAS上的AMQCLCHL.TAB文件有关的间歇性错误。这似乎弄乱了我们末端的非托管客户端,该客户端只能通过IIS重新启动来解决。我们的设置已更新,可以将此文件移动到服务器上的本地磁盘,然后将我们的代码指向该文件。这样就解决了问题,自从进行此更改以来,在过去的两周中,我们一直在不断努力,没有出现问题。