如何在 Amazon MQ 代理上设置 RabbitMQ Shovel 插件?

上次更新日期:2022 年 4 月 19 日

我想使用 RabbitMQ Shovel 插件将消息从本地代理移动到 Amazon MQ for RabbitMQ 代理。如何设置 Amazon MQ for RabbitMQ 代理以使用 RabbitMQ Shovel 插件?

简短描述

要在 Amazon MQ for RabbitMQ 代理上配置 RabbitMQ Shovel 插件,必须创建一个动态 shovel

要为 Amazon MQ for RabbitMQ 代理创建动态 shovel,您可以使用以下任一方法:

解决方法

注意:以下过程需要两个代理:上游代理(本地或基于云)和下游代理Amazon MQ for RabbitMQ 代理)。您可以在下游或上游代理上配置动态 shovel。此示例过程显示了如何在下游代理上创建动态 shovel。

使用 RabbitMQ Web 控制台在下游代理上创建动态 shovel

重要提示:请确保为从中创建 shovel 的代理中不存在的队列指定统一资源标识符 (URI)。

1.    打开 Amazon MQ 控制台

2.    在左侧导航窗格中,选择 Brokers(代理)。

3.    在 Name(名称)列中,选择下游代理的名称。

4.    在 Connections(连接)窗格中,选择 RabbitMQ Web 控制台下面列出的 URL。此时将会打开下游代理的 RabbitMQ Web 控制台插件页面。

5.    输入代理的用户名密码。然后,选择 Login(登录)以登录到 RabbitMQ Web 控制台。

6.    在 RabbitMQ Web 控制台中,选择 Admin(管理员)选项卡。然后,在右侧导航窗格中,选择 Shovel Management(Shovel 管理)。

7.    选择 Add a new shovel(添加新 shovel)。

8.    对于 Name(名称),输入 shovel 的名称。

9.    对于 Source(来源),请从下拉列表中选择 AMQP 0.9.1。然后执行以下操作:
URI 右侧的下拉列表中,选择 Queue(队列)。
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(Queue)下面的文本框中,输入上游代理的目标队列名称。
对于 URI,请保留默认的 amqp:// 文本并输入以下格式的下游代理的 URI:

amqp://$DOWNSTREAM_BROKER_USER:$DOWNSTREAM_BROKER_PASSWORD@$DOWNSTREAM_BROKER_ENDPOINT:5671

11.    选择 Add shovel(添加 shovel)。

注意:如果源队列和目标队列不存在,则 RabbitMQ 会自动创建它们。

使用 RabbitMQ 管理命令行工具在下游代理上创建动态 shovel

重要提示:请确保为从中创建 shovel 的代理中不存在的队列指定统一资源标识符 (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.    选择 Queues(队列)选项卡。然后,选择源队列的名称。

3.    在左侧导航窗格中,选择 Publish message(发布消息)。此时将会打开 Publish message(发布消息)。

4.    在 Payload(有效负载)文本框中,输入一条测试消息。

注意:您可以将 Headers(标头)和 Properties(属性)文本框留白。

5.    选择 Publish message(发布消息)按钮。测试消息将会发送至源队列。如果已正确配置动态 shovel,则消息也会被 shovel 使用并发送至下游代理的目标队列。

验证下游代理的目标队列是否已接收测试消息

1.    打开下游代理的 RabbitMQ Web 控制台。有关说明,请参阅本文使用 RabbitMQ Web 控制台在下游代理上创建动态 shovel 部分的步骤 1-5。

2.    选择 Queues(队列)选项卡。然后,选择目标队列的名称。

3.    在左侧导航窗格中,选择 Get messages(获取消息)。此时将会打开 Get messages(获取消息)部分。

4.    选择 Get messages(获取消息)按钮。如果已正确配置动态 shovel,则您向源队列发送的测试消息将显示为有效负载值。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?