有幾次我收到以下錯誤從.NET(C#4.0)上發送消息通生產者應用了藍色的:的IBM WebSphere XMS.Net CWSMQ0082E錯誤
CWSMQ0082E: Failed to send to CompCode: 2, Reason: 2009. A problem was encountered whilst sending a message. See the linked exception for more information.
當然,LinkedException
(爲什麼不使用IBM ???的InnerException
)爲空,即沒有更多信息可用。我使用
代碼(很簡單):
var m = _session.CreateBytesMessage();
m.WriteBytes(mybytearray);
m.JMSReplyTo = myreplytoqueue;
m.SetIntProperty(XMSC.JMS_IBM_MSGTYPE, MQC.MQMT_DATAGRAM);
m.SetIntProperty(XMSC.JMS_IBM_REPORT_COA, MQC.MQRO_COD);
m.SetIntProperty(XMSC.JMS_IBM_REPORT_COD, MQC.MQRO_COA);
myproducer.Send(m, DeliveryMode.Persistent, mypriority, myttl);
(Offtopic:我討厭設置屬性的SetIntProperty
方式,也<髒話刪除>想出了這個主意它需要年齡看?各種各樣的常數及其允許的值)
在.Send方法上拋出異常。我使用的是XMS.Net(IA9H/2.0.0.7)。turns up原來有一個不同的原因代碼(即使它是相同的,如果我理解正確,它應該在我的版本中修復)。這是隨機發生的(雖然它似乎更常發生,因爲消息已經發送/接收了一段時間),並且我無法重現這一點。
我有ab-so-lute-ly 沒有想法如何解決這個問題甚至從哪裏開始尋找。這是由服務器端引起的嗎?它是由XMS.net還是某些底層的IBM WebSphere MQ基礎架構引起的?
一些結果,我發現,似乎類似建議被設置SHARECNV
任何大於0的值或爲「true」 /「是」,但the documentation明確地告訴我,默認值是10。此外,我不知道這是不是原因,所以把它改成另一個值就像是霰彈槍的方法。
任何人有任何想法如何去解決這個問題?我當然可以抓住這個例外,把所有東西(渠道,會話,任何東西)都撕下來然後重新開始,但這只是簡單的醜陋的恕我直言。
嗨,謝謝你的迴應。我發佈了這個問題後,事實上,我的客戶端升級到7.1.0.0並使用autoreconnect功能進行播放。事實證明,MQ服務器版本是6.x(不知道確切地說)並且爲了使autoreconnect工作,服務器版本需要是7.0.1。由於我無法控制「對方」,因此恐怕我無能爲力。 我會研究你提供的其他建議。 – RobIII 2012-03-14 09:33:41
哦,順便說一句,重建所有MQ對象(連接,會話,生產者/消費者等)將會是地獄。我正在考慮使用這些對象(或者至少是它的通信部分)來拆除整個(Windows NT)服務,並將其重新啓動,作爲一種快速而又髒又有效且安全的選項。 .. – RobIII 2012-03-14 09:41:22
這聽起來有點醜陋,但正如你所說它是快而又髒但是有效且安全的。 V6是9月份的報廢產品,所以希望你能有一個V7.x QMgr很快可以使用。如果這是WMQ管理團隊的新聞,請隨時與我聯繫,我可以給他們提供EOS通告的鏈接,並與他們討論遷移問題。 v7.1中的安全功能足以讓v7.0完全跳過。 – 2012-03-14 14:07:49