RabbitMQ Shovel プラグインを使用して、オンプレミスブローカーから Amazon MQ for RabbitMQ ブローカーにメッセージを移動したいと考えています。
簡単な説明
Amazon MQ for RabbitMQ ブローカーで RabbitMQ Shovel プラグインを設定するには、(RabbitMQ のウェブサイトで) 動的シャベルを作成します。Amazon MQ for RabbitMQ ブローカー用の動的シャベルを作成するには、以下のいずれかの方法を使用できます。
以下の解決方法には、アップストリームブローカーとダウンストリームブローカーの 2 つのブローカーが必要です。オンプレミスまたはクラウドベースのアップストリームブローカーを使用できます。この場合、ダウンストリームブローカーは Amazon MQ for RabbitMQ ブローカーです。動的シャベルは、ダウンストリームブローカーまたはアップストリームブローカーのどちらにも設定できます。以下の手順の例は、ダウンストリームブローカーで動的シャベルを作成する方法を示しています。
注: Amazon MQ では、プライベート Amazon MQ ブローカーをシャベルの宛先または静的シャベルにすることはサポートされていません。詳細については、「Shovel plugin」を参照してください。
解決方法
RabbitMQ ウェブコンソールを使用してダウンストリームのブローカーで動的シャベルを作成する
重要: シャベルを作成するブローカーに存在しないキューには、必ず Uniform Resource Identifier (URI) を指定してください。
1. Amazon MQ コンソールを開きます。
2. ナビゲーションペインで、[ブローカー] を選択します。
3. [名前] 列で、ダウンストリームブローカーの名前を選択します。
4. [接続] ペインで、[RabbitMQ ウェブコンソール] の下に表示されている URL を選択します。ダウンストリームブローカーの RabbitMQ ウェブコンソールログインページが開きます。
5. ブローカーのユーザー名とパスワードを入力します。次に、[Login] を選択して RabbitMQ ウェブコンソールにログインします。
6. RabbitMQ ウェブコンソールで、[Admin] タブを選択します。次に、右側のナビゲーションペインで [Shovel Management] を選択します。
7. [Add a new shovel] を選択します。
8. [Name] に、ポリシーの名前を入力します。
9. [Source] で、ドロップダウンリストから [AMQP 0.9.1] を選択します。次の手順を実行します:
[URI] の右側にあるドロップダウンリストで、[Queue] を選択します。
[Queue] の下のテキストボックスに、アップストリームブローカーのソースキューの名前を入力します。
[URI] で、デフォルトのテキスト amqp:// を削除して、アップストリームブローカーの URI を次の形式で入力します:
amqps://$UPSTREAM_BROKER_USER:$UPSTREAM_BROKER_PASSWORD@$UPSTREAM_BROKER_ENDPOINT:5671
10. [Destination] で、ドロップダウンリストから [AMQP 0.9.1] を選択します。次の手順を実行します:
[URI] の右側にあるドロップダウンリストで、[Queue] を選択します。
[Queue] の下のテキストボックスに、ダウンストリームブローカーの宛先キューの名前を入力します。
[URI] をデフォルトのテキスト amqp:// のままにして、ダウンストリームブローカーの URI を次の形式で入力します:
amqp://$DOWNSTREAM_BROKER_USER:$DOWNSTREAM_BROKER_PASSWORD@$DOWNSTREAM_BROKER_ENDPOINT:5671
11. [Add shovel] を選択します。
注: ソースキューと宛先キューがまだ存在しない場合、RabbitMQ によって自動的に作成されます。
RabbitMQ Management コマンドラインツールでダウンストリームのブローカーに動的シャベルを作成する
重要: シャベルを作成するブローカーに存在しないキューには、必ず Uniform Resource Identifier (URI) を指定してください。
次の curl コマンドを実行します。
curl -u $SHOVEL_BROKER_USER:$SHOVEL_BROKER_PASSWORD \
-X PUT https://$SHOVEL_BROKER_ENDPOINT/api/parameters/shovel/%2f/rmq-lab-shovel \
-H "content-type: application/json" \
-d '{"value": {"src-protocol": "amqp091","src-uri": "amqps://$UPSTREAM_BROKER_USER:$UPSTREAM_BROKER_PASSWORD@$UPSTREAM_BROKER_ENDPOINT:5671","src-queue": "shovel-demo-src-queue","dest-protocol": "amqp091","dest-uri": "amqps://$DOWNSTREAM_BROKER_USER:$DOWNSTREAM_BROKER_PASSWORD@$DOWNSTREAM_BROKER_ENDPOINT:5671","dest-queue": "shovel-demo-dest-queue"}}'
重要:
- $SHOVEL_BROKER_USER と $SHOVEL_BROKER_PASSWORD をダウンストリームブローカーの認証情報に置き換えます。
- $SHOVEL_BROKER_ENDPOINTをダウンストリームブローカーのエンドポイントに置き換えます。
- $UPSTREAM_BROKER_USER と $UPSTREAM_BROKER_PASSWORD をアップストリームブローカーの認証情報に置き換えます。
- $UPSTREAM_BROKER_ENDPOINT をアップストリームブローカーのエンドポイントに置き換えます。
- $DOWNTREAM\ _BROKER\ _USER と $DOWNTREAM\ _BROKER\ _PASSWORD をダウンストリームブローカーの認証情報に置き換えます。
- $DOWNTREAM\ _BROKER\ _ENDPOINT をダウンストリームブローカーのエンドポイントに置き換えます。
- $SOURCE\ _QUEUE\ _NAME をアップストリームブローカーのソースキューの名前に置き換えます。
- $DESTINATION\ _QUEUE\ _NAME をダウンストリームブローカーの宛先キューの名前に置き換えます。
設定をテストする
アップストリームブローカーのソースキューにテストメッセージを送信する
1. アップストリームブローカーの RabbitMQ ウェブコンソールを開きます。
注: RabbitMQ ウェブコンソールにアクセスする方法の詳細については、RabbitMQ ドキュメントの「Management plugin」を参照してください。
2. [Queues] タブを選択します。次に、ソースキューの名前を選択します。
3. ナビゲーションペインで、[Publish message] を選択します。[Publish message] セクションが開きます。
4. [Payload] テキストボックスに、テストメッセージを入力します。
注: [Headers] と [Properties] のテキストボックスは空白のままにすることができます。
5. [Publish message] ボタンを選択します。これにより、テストメッセージがソースキューに送信されます。動的シャベルが正しく設定されていれば、シャベルはメッセージを消費してダウンストリームブローカーの宛先キューに送信します。
テストメッセージがダウンストリームブローカーの宛先キューで受信されていることを確認する
1. ダウンストリームブローカーの RabbitMQ ウェブコンソールを開きます。手順については、「RabbitMQ ウェブコンソールを使用してダウンストリームのブローカーで動的シャベルを作成する」セクションの手順 1~5 を参照してください。
2. [Queues] タブを選択します。次に、宛先キューの名前を選択します。
3. ナビゲーションペインで、[Get messages] を選択します。[Get messages] セクションが開きます。
4. [Get messages] ボタンを選択します。動的シャベルが正しく設定されていれば、ソースキューに送信したテストメッセージが [Payload] の値として表示されます。
関連情報
メッセージ駆動型アプリケーションを Amazon MQ for RabbitMQ に移行する
Amazon MQ ブローカーで RabbitMQ Federation プラグインをセットアップするにはどうすればよいですか?