Sun Java System Message Queue 3.7 UR1 技術摘要

叢集和目標

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

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

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

圖 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 處理叢集中的目標

目標 

傳播和刪除 

管理員建立 

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

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

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

暫時 

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

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

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

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

自動建立 

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

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

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

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

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