Sun Java System Message Queue 3.7 UR1 技術摘要

訊息傳送

在叢集配置中,代理程式會共用目標與訊息用戶的資訊;每個代理程式均瞭解下列資訊:

這可讓每個代理程式從其本身直接連線的訊息產生器,路由訊息到遠端訊息用戶。產生器的本機代理程式與用戶的本機代理程式有不同的職責:

叢集代理程式會一同作業,將叢集內的訊息流量降到最低;例如,如果遠端代理程式針對相同的主題目標有兩個完全一樣的訂閱,則訊息只會經由線路傳送一次。您可以設定目標特性,指定傳送至本機用戶優先於傳送至遠端用戶,以進一步減少流量。

如果用戶端與代理程式之間需要安全且加密的訊息傳送,可以配置叢集以提供代理程式之間安全的訊息傳送。

目標屬性

針對叢集代理程式上實體目標所設定的屬性,可以套用到叢集中該目標的所有實例;但是這些屬性指定的部分限制會套用到整個叢集,而其他限制則會套用到個別目標實例。表 4–1 列出您可以為實體目標設定的屬性,並指定屬性範圍。

表 4–1 叢集代理程式上實體目標的特性

特性名稱 

範圍 

maxNumMsgs

每個代理程式。因此,藉由在叢集中分發產生器,可讓您提高未使用訊息的限制總量。 

maxTotalMsgBytes

每個代理程式。因此,藉由在叢集中分發產生器,可讓您提高為未使用訊息所保留的記憶體限制總量。 

lmitBehavior

全域 

maxBytesPerMsg

每個代理程式 

maxNumProducers

每個代理程式 

maxNumActiveConsumers

全域 

maxNumBackupConsumers

全域 

consumerFlowLimit

全域 

localDeliveryPreferred

全域 

isLocalOnly

全域 

useDMQ

每個代理程式 

叢集和目標

不論目標是由管理員所建立、自動建立或是暫時建立,都會影響目標在叢集中傳播的方式,以及在連線失敗或代理程式失敗時處理目標的方式。下列幾節說明幾種使用狀況,以判斷建立目標的時機和複製目標的方式。其中包括:

使用回覆發送模型產生至佇列

下圖顯示在用戶端產生至佇列並使用回覆發送模型時,目標的建立和複製方式。

圖 4–2 叢集中的目標複製:使用回覆發送的佇列

圖中顯示目標在叢集中的傳播方式。隨後在文中將詳細說明。

  1. 管理員會建立實體目標 QW。在建立叢集期間,佇列會複製到整個叢集。

  2. 產生器 ProdQW 傳送訊息到佇列 QW,並使用回覆發送模型,引導回覆到暫時佇列 TempQ1W。(暫時佇列會在應用程式建立暫時目標並增加用戶時,建立並複製。)

  3. 本機代理程式 BrokerW 保留傳送到 QW 的訊息,並將該訊息路由到第一個符合此訊息選取條件的使用中用戶。訊息會傳送到用戶 C1QW (在 BrokerX 上) 或用戶 C2QW (在 BrokerY上),這需視哪個用戶已備妥接收訊息而定。接收訊息的用戶會傳送回覆到目標 TempQ1W

產生至自動建立的目標

下圖顯示在產生器將訊息傳送到不存在而需要自動建立的目標時,建立和複製目標的方式。

圖 4–3 叢集中的目標複製:自動建立的目標

圖中顯示目標在叢集中的傳播方式。隨後在文中將詳細說明。

  1. 產生器 ProdAutoQY 會將訊息傳送到目標 AutoQY,但是代理程式上不存在該目標。

  2. 代理程式會保留訊息,並建立目標 AutoQY

    自動建立的目標不會自動複製到整個叢集。只有當用戶選擇接收佇列 AutoQY 的訊息時,該用戶的本機代理程式才會建立目標 AutoQY,並傳送訊息到用戶。自動建立的目標會在用戶建立它的位置複製到整個叢集。在此範例中,當用戶 CAutoQY 建立目標時,複製便開始進行。

發佈至主題目標

下圖顯示在用戶端將訊息發佈到管理員建立的主題目標時,在叢集中建立和複製目標的方式。

圖 4–4 叢集中的目標複製:發佈到主題

圖中顯示目標在叢集中的傳播方式。隨後在文中將詳細說明。

  1. 管理員會建立實體主題目標 TY。管理員建立的目標 TY 會複製到整個代理程式叢集 (在使用目標之前)。

  2. 發佈者 PubTY 將訊息傳送到主題 TY

  3. 本機代理程式 BrokerY 保留發佈到 TY 的任何訊息,並將訊息路由到符合此訊息選取條件的所有主題訂閱者。在此範例中,C1TYC2TY 訂閱主題 TY

在連線或代理程式失敗時處理目標

表 4–2 說明不同類型的目標如何在叢集中進行複製與刪除。

表 4–2 處理叢集中的目標

目標 

傳播和刪除 

管理員建立 

目標建立後會在叢集中傳播,而且每個代理程式會永久儲存與目標相關的資訊。 

管理員明確刪除目標時,目標會被銷毀。 

如果有主代理程式,會在主代理程式中儲存建立與刪除記錄,以便叢集中的代理程式能同步化狀態資訊。 

暫時 

目標建立後會在叢集中傳播。 

如果允許與暫時目標相關聯的用戶重新連線,目標會永久儲存在用戶的本機代理程式中。否則一律不會儲存目標。 

如果用戶失去連線,則會刪除所有代理程式上的目標。 

如果用戶的本機代理程式當機,而且允許用戶重新連線,則與此用戶相關聯的暫時目標會受到監視。如果使用用戶端未在指定期間內重新連線,便會認為用戶端失敗並刪除目標。 

自動建立 

建立產生器但目標不存在時,會在產生器的本機代理程式上建立目標。 

針對不存在的目標建立用戶時,與該用戶和目標相關聯的資訊會傳播到整個叢集。 

自動建立的目標可以經由管理員明確刪除,或者在下列情況下自動刪除: 

  • 當指定期間內沒有用戶或訊息時,由各個代理程式自動刪除。

  • 當代理程式重新啟動,而且沒有該目標的訊息時,由各個代理程式自動刪除。