c# - IBM MQ : CWSMQ0082E: Failed to send to CompCode: 2, 原因:2017 年

标签 c# .net ibm-mq xms

我正在尝试使用 IBM XMS for .NET 发送文本消息。发送大约 254 条消息后,出现以下错误:

An unhandled exception of type 'IBM.XMS.XMSException' occurred in IBM.XMS.Client.WMQ.dll

Additional information: CWSMQ0082E: Failed to send to CompCode: 2, Reason: 2017.

谷歌上没有太多关于它的内容。我在 WSMQ Queue Limit 找到了一篇相关帖子

帖子表明最大队列有某种限制。帖子中的链接似乎不起作用。我该如何克服这个错误?

最佳答案

MQ 有一个命令mqrc,它返回任何原因代码或消息代码的文本。 2017 表示 MQRC_HANDLE_NOT_AVAILABLE。转到 Knowledge Center 可以获得更好的解释。并在 2017 年进行搜索。这将返回可返回 2017 年的 API 调用的几页,以及原因代码本身的页面:

2017 (07E1) (RC2017): MQRC_HANDLE_NOT_AVAILABLE .

该页面提供了以下问题描述:

Explanation
An MQOPEN, MQPUT1 or MQSUB call was issued, but the maximum number of open handles allowed for the current task has already been reached. Be aware that when a distribution list is specified on the MQOPEN or MQPUT1 call, each queue in the distribution list uses one handle.

我们从文档中了解到,并且可以从 MQ Explorer 的 QMgr 扩展属性面板中确认,默认情况下允许任何进程拥有的最大句柄数为 256。

Screen shot of MQ Explorer QMgr Extended Properties panel

基于所有这些以及您的程序在 254 条消息后死亡,结论是它正在为每条正在 PUT 的消息抓取一个新句柄并且永远不会释放它们。

通常,当存在一个应该包含 PUTCOMMIT 但还包含 OPEN< 的循环时,通常会发生这种情况。我建议仔细检查您的代码,也可能更新您的问题以在此处发布代码。

我还建议研究 MQ .Net 示例程序或使用其中之一作为您自己代码的基础。

关于c# - IBM MQ : CWSMQ0082E: Failed to send to CompCode: 2, 原因:2017 年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30804518/

相关文章:

java - JMS Websphere MQ BytesMessge 和 TextMessage

c# - 在生产应用程序中使用 ASP.NET MVC 2 Preview 1 是否可行?

c# - 字符串生成器 : Can StringBuilder's length & capacity exceed its MaxCapacity

.net - 如何使用 contains 方法克服区分大小写的问题。?

c# - C#.NET内存泄漏:GC阶段1和阶段2运行时的锯齿状内存使用情况

c# - .Net IBM MQ 错误 "MQRCCF_CFIN_PARM_ID_ERROR"3014

.net - Linux .Net 托管上的 IBM.MQ MQQueueManager 期间安全握手失败

c# - 如何在 WPF Visual Studio 设计器中显示占位符值,直到可以加载实际值

c# - 远程 Mysql 连接的模拟 IP 地址 .NET C Sharp

c# - 基本数组 Any() 与长度