我想使用 RabbitMQ 铲子插件将消息从本地代理转移到 Amazon MQ for RabbitMQ 代理。
简短描述
要在 Amazon MQ for RabbitMQ 代理上配置 RabbitMQ 铲子插件,请创建一个动态铲子(在 RabbitMQ 网站上)。要为 Amazon MQ for RabbitMQ 代理创建动态铲子,您可以使用以下任一选项:
以下解决方法需要两个代理:上游代理和下游代理。您可以使用本地的或基于云的上游代理。在这种情况下,下游代理是 Amazon MQ for RabbitMQ 代理。您可以在下游或上游代理上配置动态铲子。以下示例过程显示了如何在下游代理上创建动态铲子。
**注意:**Amazon MQ 不支持将私人 Amazon MQ 代理作为铲子目的地或静态铲子。有关详细信息,请参阅铲子插件。
解决方法
使用 RabbitMQ Web 控制台在下游代理上创建动态铲子
**重要事项:**确保为那些在创建铲子的代理中不存在的队列指定统一资源标识符(URI)。
1. 打开 Amazon MQ 控制台。
2. 在导航窗格中,选择代理。
3. 在名称列中,选择下游代理的名称。
4. 在连接窗格中,选择 RabbitMQ Web 控制台下面列出的 URL。系统将会打开下游代理的 RabbitMQ Web 控制台登录页面。
5. 输入您代理的用户名和密码。然后,选择登录,登录 RabbitMQ Web 控制台。
6. 在 RabbitMQ Web 控制台中,选择管理选项卡。然后,在右侧导航窗格中,选择铲子管理。
7. 选择添加新铲子。
8. 对于名称,输入铲子名称。
9. 对于来源,从下拉列表中选择 AMQP 0.9.1。然后完成以下步骤:
在 URI 右侧的下拉列表中,选择队列。
在队列下方的文本框中,输入上游代理的源队列名称。
对于 URI,删除默认 amqp:// 文本,然后按以下格式输入上游代理的 URI:
amqps://$UPSTREAM_BROKER_USER:$UPSTREAM_BROKER_PASSWORD@$UPSTREAM_BROKER_ENDPOINT:5671
10. 对于目标,从下拉列表中选择 AMQP 0.9.1。然后完成以下步骤:
在 URI 右侧的下拉列表中,选择队列。
在队列下方的文本框中,输入下游代理的目标队列名称。
对于 URI,保留默认 amqp:// 文本,然后按以下格式输入下游代理的 URI:
amqp://$DOWNSTREAM_BROKER_USER:$DOWNSTREAM_BROKER_PASSWORD@$DOWNSTREAM_BROKER_ENDPOINT:5671
11. 选择添加铲子。
**注意:**如果源队列和目标队列尚不存在,则 RabbitMQ 会自动创建它们。
使用 RabbitMQ 管理命令行工具在下游代理上创建动态铲子
**重要事项:**确保为那些在创建铲子的代理中不存在的队列指定统一资源标识符(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 Web 控制台。
**注意:**有关如何访问 RabbitMQ Web 控制台的详细信息,请参阅 RabbitMQ 文档中的管理插件。
2. 选择队列选项卡。然后,选择源队列的名称。
3. 在导航窗格中,选择发布消息。发布消息部分将会打开。
4. 在负载文本框中,输入测试消息。
注意:您可以将标题和属性文本框留空。
5. 选择发布消息按钮。此操作会将测试消息发送到源队列。如果您正确配置了动态铲子,则铲子会接收消息并将其发送到下游代理的目标队列。
验证下游代理的目标队列是否已收到测试消息
1. 打开下游代理的 RabbitMQ Web 控制台。有关说明,请参阅使用 RabbitMQ Web 控制台在下游代理上创建动态铲子部分的步骤 1-5。
2. 选择队列选项卡。然后,选择目标队列的名称。
3. 在导航窗格中,选择获取消息。获取消息部分将会打开。
4. 选择获取消息按钮。如果动态铲子配置正确,则您发送到源队列的测试消息将显示为负载值。
相关信息
将消息驱动的应用程序迁移到 Amazon MQ for RabbitMQ
如何在我的 Amazon MQ 代理上设置 RabbitMQ 联合身份验证插件?