Amazon MQ ブローカーで RabbitMQ Shovel プラグインを設定するにはどうすればよいですか?
最終更新日: 2022 年 4 月 19 日
RabbitMQ Shovel プラグインを使用して、オンプレミスブローカーから Amazon MQ for RabbitMQ ブローカーにメッセージを移動したいと考えています。RabbitMQ Shovel プラグインと連動するように Amazon MQ for RabbitMQ ブローカーを設定するにはどうすればよいですか?
簡単な説明
Amazon MQ for RabbitMQ ブローカーで RabbitMQ Shovel プラグインを設定するには、動的ショベルを作成する必要があります。
Amazon MQ for RabbitMQ ブローカーの動的ショベルを作成するには、次のいずれかを使用できます。
- RabbitMQ ウェブコンソール
- RabbitMQ Management Command Line Tool
解決方法
注意: この手順には、アップストリームブローカー (オンプレミスまたはクラウドベース) とダウンストリームブローカー (Amazon MQ for RabbitMQ ブローカー) の 2 つのブローカーが必要です。動的ショベルは、ダウンストリームブローカーまたはアップストリームブローカーのいずれかに設定できます。この手順例では、ダウンストリームブローカーで動的ショベルを作成する方法を示します。
RabbitMQ Web コンソールを使用してダウンストリームブローカーに動的ショベルを作成するには
重要: ショベルを作成するブローカーに存在しないキューには、Uniform Resource Identifier (URI) を指定してください。
1. Amazon MQ コンソールを開きます。
2. 左側のナビゲーションペインで、[ブローカー] を選択します。
3. [名前] 列で、ダウンストリームブローカーの名前を選択します。
4. [接続] ペインで、RabbitMQ ウェブコンソールの下に表示されている URL を選択します。ダウンストリームブローカーの RabbitMQ ウェブコンソールログインページが開きます。
5. ブローカーのユーザー名とパスワードを入力します。次に、[Login] を選択して RabbitMQ ウェブコンソールにログインします。
6. RabbitMQ Web コンソールで、[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 Command Line Tool を使用してダウンストリームブローカーに動的ショベルを作成するには
重要:ショベルを作成するブローカーに存在しないキューには、Uniform Resource Identifier (URI) を指定してください。
次のコマンドを実行します。
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 Web コンソールを使用してダウンストリームブローカーに動的ショベルを作成するには」のステップ 1 ~ 5 を参照してください。
2. [Queues] (キュー) タブを選択します。次に、宛先キューの名前を選択します。
3. 左のナビゲーションペインで、[Get messages] (メッセージの取得) をクリックします。[Get messages] (メッセージの取得) セクションが開きます。
4. [Get messages] (メッセージを取得) ボタンを選択します。動的ショベルが正しく設定されていれば、ソースキューに送信したテストメッセージが Payload 値として表示されます。
関連情報
Migrating message driven applications to Amazon MQ for RabbitMQ
Amazon MQ ブローカーで RabbitMQ Federation プラグインをセットアップするにはどうすればよいですか?
Shovel (Amazon MQ ワークショップ)
Federation (Amazon MQ ワークショップ)