您可以為叢集的每個代理程式成員指定叢集配置特性,以定義叢集。您可以為叢集中的每個代理程式個別設定這些特性,但通常較方便的做法是將所有配置特性集中至所有代理程式均參照的叢集配置檔案中。這樣可以防止違反合約的設定,並確保叢集中的所有代理程式都能共用相同且一致的配置資訊。
叢集配置特性詳述於表 14–9 中。這些部分包括:
imq.cluster.hostname 將主機名稱或 IP 位址賦予 cluster 連線服務,用於在叢集的各代理程式之間進行內部通訊。如果有多個主機,此設定才會有用:例如,如果一部電腦中有多個網路介面卡。
您可以單獨設定個別代理程式的 hostname 和 port 特性,但是叢集中所有代理程式的 brokerlist、masterbroker、url 和 transport 值必須相同。
以下各節描述如何設定代理程式叢集配置特性,可以為叢集中的每個代理程式個別設定,或者使用叢集配置檔案集中設定。
您可以在代理程式的實例配置檔案中 (或啟動代理程式時在指令行上) 設定叢集配置特性。例如,若要建立的叢集包含 host1 連接埠 9876 上、host2 連接埠 5000 上和 ctrlhost 預設連接埠 (7676) 上的代理程式,三個代理程式的實例配置檔案中都將包含以下的特性:
imq.cluster.brokerlist=host1:9876,host2:5000,ctrlhost
請注意,如果您需要變更叢集配置,則此方法要求更新叢集中所有代理程式的實例配置檔案。
基於一致性以及便於維護的考量,建議您將所有的共用叢集配置特性集合至單一叢集配置檔案中,而不要為每個代理程式個別地進行設定。在此方法中,每個代理程式的實例配置檔案都必須設定 imq.cluster.url 特性指向叢集配置檔案的位置,例如:
imq.cluster.url=file:/home/cluster.properties
接著,叢集配置檔案會為叢集中的所有代理程式定義共用配置特性,例如要連線的代理程式清單 (imq.cluster.brokerlist)、用於 cluster 連線服務的傳輸協定 (imq.cluster.transport ),以及可以選擇性設定的主代理程式的位址 (imq.cluster.masterbroker)。以下的程式碼定義與上一個範例中相同的叢集,其中在 ctrlhost 上執行的代理程式作為主代理程式:
imq.cluster.brokerlist=host1:9876,host2:5000,ctrlhost imq.cluster.masterbroker=ctrlhost