2012-09-25 103 views

回答

2

是的,只要使用IBM的JMS類將消息放到那裏。這些類將將JMSDeliveryMode值轉換爲其中一個WebSphere MQ持久性值。

C程序可能會嘗試設置或更改消息屬性,以便它們與消息標頭不同,並且我不確定WMQ API是否會在該情況下強制執行一致性。

但是,重申第一部分,答案是肯定的。鏈接的頁面描述了JMS屬性如何映射到本機WMQ標題,並且JMSDeliveryMode確實映射到MQMD.Persistence

我注意到您的鏈接到V6.0 Infocenter。希望你在幾天內不會繼續使用WMQ V6.0。當前的Infocenter主題相同的信息是here,你會發現它被重新組織並闡明瞭一些觀點。我強烈建議至少遷移到V7.1客戶端和QMgr,最好是V7.5 - 當然還有相應的Infocenter。

UPDATE:
迴應的意見,優先順序如下:

  1. 如果如所述here餘輝設爲明確管理對象的對象定義,那麼它優先。
  2. 如果管理對象設置爲PERSISTENCE=APP(默認值),則應用程序的設置優先。
  3. 如果被管理對象和應用都沒有明確設置持久性,那麼默認情況下是查看隊列上的設置並使用該設置。

注意,如果在該消息是首先把隊列恰好是一個傳輸隊列,持久性在該點確定,並且與所述消息行進無論它的土地,即使遠程目標隊列被設置爲DEFPSIST(NO)

如果仔細觀察第一個項目符號鏈接的頁面,您將注意到可能的持續值爲HIGH。對這個價值的描述似乎已經不在本書的範圍內(我會報道這一點),但它在this page。這是JMS的「盡力而爲」交付模式,屬於WMQ的持續模式和非持續模式。由於沒有本地等價物,因此WMQ通過在標記爲恢復的隊列上使用非持久消息來實現此目的。當QMgr啓動時,假設關閉和啓動正常並且隊列文件未被損壞,則隊列中的任何非持久性消息都將被保存。即使在使用線性日誌記錄的QMgr上,也不會記錄這些消息以進行介質恢復,因此只有它們的一個副本。所以大多數情況下,這些消息在重新啓動後仍然存在,但如果QMgr可以通過刪除它們來解決任何情況,它將會。

請注意頁面上的警告,表示消息通過的所有隊列必須設置爲NPMCLASS(HIGH)才能使其工作。我不確定如果郵件在通過網絡的方式登陸隊列時遇到了什麼情況,但您應該將它們視爲非永久郵件。

+0

謝謝Rob。至於版本,不,我們使用v7.1。我們將盡快進入v7.5 :) – arrehman

+0

這是JMSDeliveryMode的默認值嗎?該值不是由發送消息的客戶端設置的。所以,即使隊列DEFPSIST爲否,這些消息將在QMgr重新啓動後仍然存在? – arrehman

+0

查看更新的答案。感謝您的投票!接近那10k大關。 :-) –