2015-06-12 90 views
3

我正嘗試使用IBM XMS for .NET發送文本消息。發送大約254條消息後,出現以下錯誤:IBM MQ:CWSMQ0082E:未能發送到CompCode:2,原因:2017

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

該帖子建議在最大隊列中有某種限制。帖子中的鏈接似乎不起作用。我如何克服這個錯誤?

回答

2

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擴展屬性面板中確認,在默認情況下,最大處理任何程序將被允許也正是基於這樣的一切,你的程序後,254個信息死亡256

Screen shot of MQ Explorer QMgr Extended Properties panel

,得出的結論是,它是抓住每一個消息是新鮮手柄並且永遠不會釋放它們。

通常,當有應包含PUTCOMMIT而是還包含OPEN循環發生這種情況。我會建議仔細檢查您的代碼,也可能更新您的問題以在此處發佈代碼。

我還建議學習MQ .Net示例程序或使用其中的一個作爲您自己的代碼的基礎。

相關問題