2013-10-28 126 views
0

我對MQ不熟悉,因此如果我沒有正確解釋自己,請原諒我。使用2110 MQRC_FORMAT_ERROR讀取失敗的隊列時,我們收到了一條消息。看起來問題在於它沒有指定「格式」,例如,我們期待'MQSTR'。客戶端代碼(C#)捕獲MQException並執行MQQueueManager.Backout(),但是該消息剛剛返回隊列並被客戶端讀取並再次拒絕。WebSphere MQ .NET客戶端 - 退出隊列不起作用

看着隊列,我看到它沒有設置退出隊列或退出閾值。隊列管理器也沒有設置死信隊列。因此,我所做的就是設置DLQ,並設置隊列的退出隊列,退出閾值爲5.但是,消息仍然滯留在隊列中不斷讀取並放回。該消息的退出計數目前接近2000萬。

我想要取消退出和DLQ工作,但是如果有另一種方法只是手動刪除或移動此消息,這將有助於現在。這只是一個測試信息,所以如果我們失去它並不重要。

編輯:我不得不清除隊列來移動東西,所以不幸的是可能無法測試任何解決方案,直到它再次發生。

回答

3

MQ本機客戶端不會自動將錯誤消息移動到BackoutQDLQ。應用程序必須編寫額外的代碼將消息移動到DLQBackout queue。但是,XMS .NET和JMS客戶端完成這項工作。 XMS .NET是C#語言中的JMS規範實現。 XMS .NET與MQ客戶端軟件包捆綁在一起。

來到你的情況:

MQRC_FORMAT_ERROR實際上不是一個錯誤,這是告知MQ客戶端無法進入的消息轉換應用的警告,並將其交給一個未轉換的消息給應用程序。應用程序必須處理此異常,並且不應回滾此類消息。您需要調查發送此類消息的應用程序並解決所有問題。

請參閱文檔here

+0

非常感謝。這非常有幫助。 – Bert