16.2. ブローカー接続の設定
以下の手順では、ブローカー間でメッセージをミラーリングするようにブローカー接続を設定する方法を説明します。いずれかのブローカーのみがアクティブになり、すべてのメッセージが他のブローカーにミラーリングされます。
前提条件
- 2 つの稼働中のブローカーがある。
手順
最初のブローカーの
broker.xml
ファイルにbroker-connections
要素を作成します。以下に例を示します。<broker-connections> <amqp-connection uri="tcp://<hostname>:<port>" name="DC1"> <mirror/> </amqp-connection> </broker-connections>
<hostname>
- 他のブローカーインスタンスのホスト名。
<port>
- 他のホストでブローカーによって使用されるポート。
最初のブローカー上のすべてのメッセージは 2 番目のブローカーにミラーリングされますが、ミラーが作成される前に存在していたメッセージはミラーリングされません。
最初のブローカーでメッセージを同期的にミラーリングして、ミラーリングされたブローカーがディザスターリカバリー用に最新であることを確認する場合は、次の例に示すように、ブローカーの
amqp-connection
要素にsync=true
属性を設定します。同期ミラーリングでは、ブローカーからミラーリングされたブローカーに送信されるメッセージが両方のブローカーのボリュームに同時に書き込まれる必要があります。両方のブローカーで書き込み操作が完了すると、ソースブローカーは書き込みリクエストが完了したことを認識し、制御がクライアントに返されます。
<broker-connections> <amqp-connection uri="tcp://<hostname>:<port>" name="DC2"> <mirror sync="true"/> </amqp-connection> </broker-connections>
注記ミラーリングされたブローカーで書き込みリクエストを完了できない場合、たとえばブローカーが使用できない場合、最新の書き込みリクエストを完了するためにミラーが使用可能になるまで、クライアント接続はブロックされます。
以下の追加機能を設定することもできます。
-
queue-removal
: queue- または address-removal イベントを送信するかどうかを指定します。デフォルト値はtrue
です。 -
message-acknowledgments
: メッセージ確認応答を送信するかどうかを指定します。デフォルト値はtrue
です。 -
queue-creation
: queue- または address-creation イベントを送信するかどうかを指定します。デフォルト値はtrue
です。
注記この例のブローカー接続名である
DC1
は、$ACTIVEMQ_ARTEMIS_MIRROR_mirror
という名前のキューを作成するために使用されます。キューがそのブローカーで表示されない場合でも、対応するブローカーがこれらのメッセージを受け入れるように設定されていることを確認します。-
2 番目のブローカーの
broker.xml
ファイルにbroker-connections
要素を作成します。以下に例を示します。<broker-connections> <amqp-connection uri="tcp://<hostname>:<port>" name="DC2"> <mirror/> </amqp-connection> </broker-connections>
2 番目のブローカーでメッセージを同期的にミラーリングする場合は、ブローカーの
amqp-connection
要素にsync=true
属性を設定します。以下に例を示します。<broker-connections> <amqp-connection uri="tcp://<hostname>:<port>" name="DC2"> <mirror sync="true"/> </amqp-connection> </broker-connections>
- 「マルチサイトの耐障害性のあるメッセージングシステムでのクライアントの設定」 に記載されている説明を使用してクライアントを設定します。これはブローカー接続でなく、共有ストレージはありません。
Red Hat は、ミラー設定で両方のブローカーからのメッセージを消費するクライアントアプリケーションをサポートしていません。クライアントが両方のブローカーでメッセージを消費しないようにするには、いずれかのブローカーでクライアントアクセプターを無効にします。