1. 程式人生 > >關於IBM MQ6.0與MQ8.0的通訊問題

關於IBM MQ6.0與MQ8.0的通訊問題

在網路,業務,業務量都沒有增長的情況下,MQ8的批量傳送通道突然就掛掉了,變成retrying狀態了,訊息全都堵在傳輸佇列裡了,死信佇列無訊息。實時通道正常,排除網路原因導致的通道問題。採取的措施有簡單的重置通道,通道狀態沒變化,然後進行 STOP CHANNEL(MQ8.MQ6.B1) MODE(FORCE); RESET CHANNEL(MQ8.MQ6.B1) ACTION(COMMIT); START CHANNEL(MQ8.MQ6.B1); 通道狀態還是沒變化,一直是retry ing,檢視日誌,發現MQ8傳送端的日誌一直報錯AMQ9504(MQ8.MQ6.B1通道檢測到協議錯誤)和AMQ9999,接收端MQ6.0一直報錯AMQ9206(將資料傳送到MQ6.0發生錯誤通訊故障,TCP/IP (write)呼叫的返回碼104 X(‘68’)),由於是生產系統,通道堵住業務就做不了,於是採取的臨時措施就是清空MQ8.0傳送通道關聯的傳輸佇列裡的訊息,清空後,通道狀態就正常了。到晚上業務量大的時候又堵住了,然後白天再清,一直這樣迴圈。傳輸佇列裡堵住的訊息取出來看過,都是業務正常的報文訊息。 到這裡,無計可施了。在ibm開case求幫助,分析說可能是接受端的問題,可能是MQ6的bug,要打補丁,於是乎打補丁,把MQ6.0.2.1升級到MQ6.0.2.12,升級完了,這下好了MQ6.0的批量傳送通道起不來了,MQ8.0的正常,但是兩邊報錯竟然一樣的。於是升級也沒有解決這個問題。。。心態崩了。。。這個問題搞了半個月了。 然後想是不是6.0的版本太低了,準備把6升到7試試。昨天下午,ibm工程師查到了有跟我們一樣的case,建議我們把批量傳送通道的COMPMSG(ZLIBHIGH)改成COMPMSG(NONE),接收端和傳送端都要改。然後重啟通道就可以了,今天沒出問題!!! 可能是由於6的版本太低了,跟8通訊的時候,這個壓縮的引數把訊息給壓縮了,然後到6那邊可能接受這個壓縮的訊息有問題,導致他的接收端拒絕接收訊息,斷開連線,進而導致通訊故障。

太他媽的開心了。大半個月,煎熬。