适用于 RabbitMQ 的亚马逊 MQ 插件 - Amazon MQ
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

适用于 RabbitMQ 的亚马逊 MQ 插件

适用于 RabbitMQ 的亚马逊 MQ 支持为管理提供支持的 RabbitMQ 管理插件和 RabbitMQ 网络控制台。API您可以使用 Web 控制台和管理API来创建和管理代理用户和策略。

除了管理插件之外,Amazon MQ for RabbitMQ 还支持以下插件。

Shovel 插件

Amazon MQ 托管式代理支持 RabbitMQ shovel,允许您将消息从一个代理实例上的队列和交换器移动到另一个。您可以使用 shovel 连接松耦合的代理,并将消息从消息负载较重的节点分发出去。

Amazon MQ 托管式 RabbitMQ 代理支持动态 shovel。动态 shovel 使用运行时参数进行配置,并且可以随时通过客户端连接以编程方式启动和停止。例如,使用 RabbitMQ 管理API,您可以向以下API端点创建PUT请求以配置动态铲子。在该示例中,{vhost} 可以替换为代理的虚拟主机的名称,{name} 替换为新的动态 shovel 的名称。

/api/parameters/shovel/{vhost}/{name}

在请求体中,您必须指定队列或交换器,但不能同时指定两者。下面的这个示例在 src-queue 中指定的本地队列和在 dest-queue 中定义的远程队列之间配置动态 shovel。同样,您可以使用 src-exchangedest-exchange 参数来配置两个交换器之间的 shovel。

{ "value": { "src-protocol": "amqp091", "src-uri": "amqp://localhost", "src-queue": "source-queue-name", "dest-protocol": "amqp091", "dest-uri": "amqps://b-c8352341-ec91-4a78-ad9c-a43f23d325bb.mq.us-west-2.amazonaws.com:5671", "dest-queue": "destination-queue-name" } }
重要

如果 shovel 目标是私有代理,则无法在队列或交换器之间配置 shovel。只能在公有代理中的队列或交换器之间,或在私有代理中的源与公有代理中的目标之间配置 shovel。

有关使用动态 shovel 的更多信息,请参阅 RabbitMQ 动态 shovel 插件

注意

Amazon MQ 不支持使用静态 shovel。

联合插件

Amazon MQ 支持联合交换器和队列。通过联合,您可以在各个代理上的队列、交换器和消费者之间复制消息流。联合队列和交易所使用 point-to-point链接连接到其他代理中的对等体。默认情况下,联合交换器只路由一次消息,而联合队列可以根据使用者的需要多次移动消息。

您可以使用联合允许下游代理使用来自上游的交换器或队列的消息。您可以使用 RabbitMQ Web 控制台或管理功能在下游代理上启用联合。API

重要

如果上游队列或交换器位于私有代理中,则无法配置联合身份验证。只能在公有代理中的队列或交换器之间,或在公有代理中的上游队列或交换器与私有代理中的下游队列或交换器之间配置联合身份验证。

例如,使用管理API,您可以通过执行以下操作来配置联合。

  • 配置一个或多个定义到其他节点的联合连接的上游。您可以使用 RabbitMQ Web 控制台或管理来定义联合连接。API使用管理API,您可以使用以下POST请求正文创建对/api/parameters/federation-upstream/%2f/my-upstream的请求。

    {"value":{"uri":"amqp://server-name","expires":3600000}}
  • 配置策略以使您的队列或交换器联合。您可以使用 RabbitMQ Web 控制台或管理来配置策略。API使用管理API,您可以使用以下POST请求正文创建对/api/policies/%2f/federate-me的请求。

    {"pattern":"^amq\.", "definition":{"federation-upstream-set":"all"}, "apply-to":"exchanges"}
    注意

    请求体假定服务器上的交换器以 amq 开头。使用正则表达式 ^amq\. 将确保所有名称以“amq”开头的交换器都已启用联合。您的 RabbitMQ 服务器上的交换器可以不同的名称命名。

有关配置联合插件的更多信息,请参阅 RabbitMQ 联合插件

一致性哈希交换器插件

默认情况下,Amazon MQ for RabbitMQ 支持一致性哈希交换器类型插件。一致性哈希交换器根据通过消息的路由键计算的哈希值将消息路由到队列。如果提供合理均匀的路由密钥,一致性哈希交换可以在队列之间合理均匀地分发消息。

对于绑定到一致哈希交换的队列,绑定密钥用于确定每个队列的绑定权重。 number-as-a-string具有较高绑定权重的队列将从与之绑定的一致性哈希交换中接收分配比例更高的消息。在一致性哈希交换拓扑中,发布者可以简单地将消息发布到交换中,但必须将使用者明确配置为使用来自特定队列的消息。

有关一致哈希交换的更多信息,请参阅网站上的 RabbitMQ 一致哈希交换类型。 GitHub