Application Server 支援 JMS 連線池儲存和容錯移轉。Sun Java System Application Server 可自動地將 JMS 連線儲存到連線池。當 Address List Behavior 屬性為 random (預設) 時,Application Server 會從 JMS 主機清單中隨機選取其主代理程式。發生容錯移轉時,MQ 不需設定即可將負載傳輸至其他代理程式並可保持 JMS 語義不變。如果 JMS 的類型為 LOCAL,則 Address List Behavior 屬性的預設值為 priority。
若要指定在連線中斷後,Application Server 是否嘗試重新連線至主代理程式,請選取 [重新連線] 核取方塊。啟用後,如果主代理程式中斷,Application Server 會嘗試重新連線至 JMS 主機清單中的其他代理程式。
啟用 [重新連線] 後,還需指定以下屬性︰
位址清單運作方式:連線嘗試是依循 JMS 主機清單中的位址順序 (priority) 還是依循隨機順序 (random)。如果設定為 Priority,則 Java 訊息服務會嘗試連線至 JMS 主機清單中指定的第一個 MQ 代理程式,並且,當第一個代理程式不可用時,會使用其他代理程式。如果設定為 Random,則 Java 訊息服務會從 JMS 主機清單中隨機選取 MQ 代理程式。如果許多用戶端嘗試使用同一個連線工廠來進行連線,請使用此設定以防止它們全部嘗試連線至同一個位址。
Address List Iterations︰Java 訊息服務透過 JMS 主機清單反覆運算,以建立 (或重新建立) 連線的次數。值 -1 表示嘗試次數沒有限制。
重新連線嘗試:用戶端執行階段嘗試連線 (或重新連線) JMS 主機清單中每個位址的次數。到達這個值後,用戶端執行階段將嘗試連線到清單中的下一個位址。值 -1 表示重新連線嘗試次數沒有限制 (用戶端執行階段將嘗試連線至第一個位址直到連線成功)。
重新連線間隔:兩次重新連線嘗試之間的間隔秒數。此屬性適用於對 JMS 主機清單中每個位址的連線嘗試,及對該清單中連續位址的連線嘗試。如果該間隔太短,則代理程式將沒有時間恢復。如果該間隔太長,則重新連線會變得遲緩,以至於讓人無法接受。
您可以使用 JMS 連線工廠設定置換這些設定。如需詳細資訊,請參閱「Sun Java System Application Server 9.1 管理指南」中的「JMS 連線工廠」。
您可以使用 activation-config-property 元素,在 sun-ejb-jar.xml 檔案中為訊息驅動 Bean 配置 jmsra 資源配接卡的 ActivationSpec 特性。每當部署訊息驅動 Bean (EndPointFactory) 時,連接器執行階段引擎會尋找這些特性,接著配置在資源配接卡中。請參閱「Sun Java System Application Server 9.1 Application Deployment Guide」中的「activation-config-property」。
Application Server 不需設定即可將訊息隨機傳送到具有相同 ClientID 的訊息驅動 Bean。長期用戶需要 ClientID。
對於其中未配置 ClientID 的非長期訂閱者,訂閱相同主題的特定訊息驅動 Bean 之所有實例均視為相等。將訊息驅動 Bean 部署到 Application Server 的多個實例時,只有其中一個訊息驅動 Bean 會收到訊息。如果有多個不同的訊息驅動 Bean 訂閱相同的主題,則每個訊息驅動 Bean 的一個實例會接收到訊息的副本。
若要支援使用相同佇列的多個用戶,請將實體目標的 maxNumActiveConsumers 特性設定為較大的值。如果已設定此特性,Sun Java System Message Queue 軟體最多會允許該數量的訊息驅動 Bean 使用相同佇列的訊息。會將訊息隨機傳遞到訊息驅動 Bean。如果將 maxNumActiveConsumers 設定為 -1,則對用戶數目沒有限制。
若要確保優先使用本機傳遞,請將 addresslist-behavior 設定為 Priority。此設定指定先選取 AddressList 中的第一個代理程式。第一個代理程式是本機並置的 Message Queue 實例。如果無法使用此代理程式,則會依 AddressList 中列出的代理程式順序嘗試連線。此設定是屬於叢集的 Application Server 實例的預設值。
開發者設定檔中無法使用叢集功能。如需有關設定檔的資訊,請參閱「Sun Java System Application Server 9.1 管理指南」中的「用法設定檔」。
JMS 元件有兩層可用性:
服務可用性 – 此層級的重點在於 JMS 服務的可用性,即使有一段時間無法使用訊息也無關緊要。只要將連線容錯移轉到提供服務的可用新實例,JMS 元件就會將服務視為可用且會正常運作。「Sun Java System Application Server 9.1 Developer’s Guide 」中的「Connection Failover」說明了此可用性層級。
資料可用性 – 此層級的服務和持續性訊息可用性都不可或缺。此層級也處理一次 (且只有一次) 傳送及訊息排序作業的 JMS 語義。
您可以在包含 Java 訊息服務 (JMS) 的 Sun Java System Message Queue 叢集中啟用資料可用性。訊息會保留在共用持續性存放區中,並可從叢集中的其他所有代理程式實例或高可用性資料庫 (HADB) (但必須已安裝,並已選取企業設定檔) 取得。如需有關設定檔的資訊,請參閱「Sun Java System Application Server 9.1 管理指南」中的「用法設定檔」。您必須先啟用 Application Server 實例的可用性,才能為相應的代理程式啟用資料可用性。
個別的應用程式和模組無法控制或覆寫 JMS 可用性。
若要啟用資料可用性,請在管理主控台中選取相關配置下的「可用性服務」元件。核取 [可用性服務] 核取方塊。若要為 JMS 服務啟用可用性,請選取 [JMS 可用性] 標籤,然後核取 [可用性服務] 方塊。Application Server 叢集中的所有實例應該具有相同的實例可用性和 JMS 可用性設定,才能確保運作方式一致。如需詳細資訊,請參閱「Sun Java System Application Server 9.1 高可用性管理指南」。
開發者設定檔中無法使用叢集功能。如需有關設定檔的資訊,請參閱「Sun Java System Application Server 9.1 管理指南」中的「用法設定檔」。