2012-11-15 51 views
1

我們在WebSphere MQ v7.0.1.9隊列管理器中設置了BOTHRESH(5),BOQNAME(USER.ERR)WebSphere MQ回退閾值和回退名稱不起作用

當TX在WebSphere應用服務器v7的容器託管TX中由MDB回退時,消息被放置在DLQ中,而不是置於原始隊列中。

我檢查了TX表明TX成功回滾的日誌。

有人能幫助我嗎?

回答

2

...該消息被放置在DLQ中,而不是置於原始隊列中。

設置BOQNAMEBOTHRESH導致QMGR試圖將消息比原來的隊列以外的東西。一旦超過BOTHRESH,QMgr將首先嚐試將消息放入由BOQNAME命名的隊列中,然後放入DLQ中,如果不可能放入BOQNAME。只有當兩者都失敗時,QMgr纔會將消息放回原始隊列,或者如果消息是非持久性的,則丟棄它。

是打了退堂鼓在BOQNAME或到DLQ失敗命名隊列的一些原因是:

  1. 目標隊列不存在。
  2. 目標隊列已滿。
  3. 消息大小超過目標隊列的MAXMSGL屬性。
  4. 用戶無權將消息放入目標隊列。
  5. 目標隊列類型錯誤(即XMitQ或模型隊列)。
  6. 放入DLQ時,QMgr的DEADQ屬性爲空。
  7. BOTHRESH設定但BOQNAME不是。在這種情況下,DLQ是唯一嘗試的隊列。
+0

感謝羅布:)消息永遠不會放回到原始隊列中(即使是第一次當他們回滾消息被推送到DLQ時)。第四點你的意思是我正在運行WAS實例的用戶標識應該被授權將msg放回原始隊列? – user1284849

+0

設置BOQNAME和BOQTHRESH導致QMgr試圖將消息放在原始隊列以外的東西(你的意思是,如果刪除這些屬性,然後默認回滾消息將始終放在原始隊列中。我甚至厭倦了,但仍然它被登陸在死信隊列中:() – user1284849

+0

必須被授權的用戶ID是* MQ *認爲連接的用戶ID,這可能是WAS實例ID,或者它可能在頻道的「MCAUSER」中被覆蓋或被頻道安全退出當頻道正在運行時,DIS CHS(頻道名稱)顯示WMQ在'MCAUSER'字段中用於授權的ID如果'MCAUSER'爲空,頻道將作爲WMQ管理員運行, BOQNAME'和'BOTHRESH'都是空的並且消息在DLQ中登陸,這不是由於退出處理。DLQ消息的原因代碼是什麼? –