隨著用戶端數目或連線數量的增加,您可能需要延展訊息服務,以突破瓶頸或改善效能。Message Queue 訊息服務會依照您的需求提供多種延展選項。為方便起見,這些選項可分為下列種類:
垂直延展的方式是增加更多處理能力及擴充可用資源。方法是增加更多處理器或記憶體、切換至共用執行緒模型,或以 64 位元模式執行 Java VM。
如果您使用點對點網域,可以藉由允許多個用戶存取佇列,來延展用戶端。使用這種方式,可以指定使用中和備份用戶的最大數目。負載平衡機制也會考慮用戶的目前處理能力與訊息處理率。這屬於 Message Queue 功能。(JMS 規格定義僅有一個用戶存取佇列的訊息傳送運作方式;允許多個用戶的佇列運作方式隨提供者而定。Message Queue 開發者指南提供此延展選項的更多資訊。)
無狀態水平延展的方式是增加代理程式,並重新分發現有的用戶端到這些代理程式。此方式易於執行,但是僅在訊息傳送作業可以劃分為獨立的工作群組時才適用。
狀態水平延展的方式是將代理程式連線到叢集中。在代理程式叢集中,每個代理程式都會連線到叢集中的其他代理程式,亦會連線到其本機應用程式用戶端。代理程式可位於相同的主機或分散在網路中不同的主機。有關目標和用戶的資訊會複製到叢集中的所有代理程式上。目標或訂閱者的更新也會進行傳播,因此每個代理程式可以從產生器路由訊息到其直接連線到用戶的代理程式,而這些用戶是連線到叢集的其他代理程式。在使用備份用戶的情況下,如果代理程式或連線失敗,則傳送到無法存取的用戶之訊息,會轉寄至其他代理程式上的備份用戶。
如果代理程式或連線失敗,有關永久性實體 (目標和長期訂閱) 的狀態資訊可能會不同步。例如,如果叢集代理程式失敗,且在叢集的其他代理程式上建立目標,則當第一個代理程式重新啟動時,將不知道這個新目標。若要避免此問題,可以將叢集中的某個代理程式指定為主代理程式。此代理程式負責追蹤主配置檔案中對目標和長期訂閱的所有變更,並且負責更新叢集中暫時離線的代理程式。如需更多資訊,請參閱第 4 章, 代理程式叢集。
若是代理程式或連線失敗,即使使用主代理程式,Message Queue 也只提供服務可用性,而不會提供資料可用性。例如,若是叢集代理程式變成無法使用,代理程式所保留的任何永久性訊息都會變成無法使用,直到代理程式回復為止。目前確保資料可用性的唯一方法,是透過使用 SunCluster Message Queue 代理程式。在這種情況下,永久性存放區會位於共用檔案系統上。如果代理程式失敗,則第二個節點上的 Message Queue 代理程式會啟動某個代理程式,來接管共用存放區。用戶端會重新連線到該代理程式,並由此繼續取得服務及存取永久性資料。