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