36.5. クラスターのメンバーを明示的に指定
場合によっては、UDP がネットワークで有効にならず、クライアントがクラスター内のサーバーのリストを検出する、またはサーバーがクラスター内の他のサーバーを検出するために、UDP サーバー検出を使用できないことがあります。
この場合、クラスター内のサーバーのいるとは各ノードとクライアントサイドで明示的に指定できます。これは以下のように行います。
36.5.1. クライアントサイドでのサーバーのリストの指定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
これは、JMS を使用するかコア API を使用するかによって異なります。
36.5.1.1. JMS を使用してサーバーのリストを指定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
JMS と JMS サービスを使用して JMS 接続ファクトリーインスタンスをサーバーの JNDI に直接ロードする場合は、サーバーサイドの設定ファイル
JBOSS_DIST/jboss-as/server/PROFILE/deploy/hornetq/hornetq-jms.xml でサーバーのリストを指定できます。以下に例を示します。
<connection-factory name="ConnectionFactory">
<connectors>
<connector-ref connector-name="my-connector1"
backup-connector-name="my-backup-connector1"/>
<connector-ref connector-name="my-connector2"
backup-connector-name="my-backup-connector2"/>
<connector-ref connector-name="my-connector3"
backup-connector-name="my-backup-connector3"/>
</connectors>
<entries>
<entry name="/ConnectionFactory"/>
</entries>
</connection-factory>
connection-factory 要素には、ゼロ個以上の connector-ref 要素を含めることができます。これらの各要素はconnector-name 属性とオプションの backup-connector-name 属性を指定します。connector-name 属性はライブコネクターとして使用される JBOSS_DIST/jboss-as/server/PROFILE/deploy/hornetq/hornetq-configuration.xml で定義されたコネクターを参照します。backup-connector-name はオプションであり、指定された場合は、hornetq-configuration.xml で定義されたコネクターも参照します。コネクターの詳細については、14章トランスポートの設定 を参照してください。
接続ファクトリーは [コネクター, バックアップコネクター] のペアのリストを保持します。これらのペアは、クラスターへの接続の作成時にクライアントサイドでクライアント接続ロードバランシングポリシーによって使用されます。
JMS を使用し、JNDI を使用していない場合は、
HornetQConnectionFactory をインスタンス化するときに [コネクター, バックアップコネクター] ペアのリストを直接指定することもできます。
List<Pair<TransportConfiguration, TransportConfiguration>> serverList =
new ArrayList<Pair<TransportConfiguration, TransportConfiguration>>();
serverList.add(new Pair<TransportConfiguration,
TransportConfiguration>(liveTC0, backupTC0));
serverList.add(new Pair<TransportConfiguration,
TransportConfiguration>(liveTC1, backupTC1));
serverList.add(new Pair<TransportConfiguration,
TransportConfiguration>(liveTC2, backupTC2));
ConnectionFactory jmsConnectionFactory = HornetQJMSClient.createConnectionFactory(serverList);
Connection jmsConnection1 = jmsConnectionFactory.createConnection();
Connection jmsConnection2 = jmsConnectionFactory.createConnection();
上記のコード例により、
TransportConfiguration オブジェクトのペアのリストが作成されます。各 TransportConfiguration オブジェクトには、特定のサーバーと接続を確立する方法に関する情報が含まれます。
HornetQConnectionFactory インスタンスを作成してコンストラクターのサーバーのリストを渡します。このファクトリーにより作成されたすべてのコネクターは、サーバーのリストに適用されたクライアント接続のロードバランシングポリシーに従って、接続を作成します。
36.5.1.2. コア API を使用したサーバーのリストの指定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の例のように、
ClientSessionFactory インスタンスの作成時にサーバーのリストを直接指定します。
List<Pair<TransportConfiguration, TransportConfiguration>> serverList =
new ArrayList<Pair<TransportConfiguration, TransportConfiguration>>();
serverList.add(new Pair<TransportConfiguration,
TransportConfiguration>(liveTC0, backupTC0));
serverList.add(new Pair<TransportConfiguration,
TransportConfiguration>(liveTC1, backupTC1));
serverList.add(new Pair<TransportConfiguration,
TransportConfiguration>(liveTC2, backupTC2));
ClientSessionFactory factory = HornetQClient.createClientSessionFactory(serverList);
ClientSession session1 = factory.createClientSession(...);
ClientSession session2 = factory.createClientSession(...);
上記のコード例により、
TransportConfiguration オブジェクトのペアのリストが作成されます。各 TransportConfiguration オブジェクトには、特定のサーバーと接続を確立する方法に関する情報が含まれます。この詳細については、14章トランスポートの設定 を参照してください。
ClientSessionFactoryImpl インスタンスが作成され、コンストラクターでサーバーのリストが渡されます。このファクトリーにより作成されたすべてのセッションは、サーバーのリストに適用されたクライアント接続のロードバランシングポリシーに従ってセッションを作成します。