

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

# 插件
<a name="rabbitmq-basic-elements-plugins"></a>

适用于 RabbitMQ 的亚马逊 MQ 还支持以下插件。
+ [RabbitMQ 管理插件](#rabbitmq-management-plugin)
+ [铲子插件](#rabbitmq-shovel-plugin)
+ [联邦插件](#rabbitmq-federation-plugin)
+ [一致的哈希交换插件](#rabbitmq-consistent-hash-exchange)
+ [OAuth 2 个插件](#rabbitmq-oauth-plugin)
+ [LDAP插件](#rabbitmq-ldap-plugin)
+ [HTTP 插件](#rabbitmq-http-plugin)
+ [SSL 证书插件](#rabbitmq-ssl-plugin)
+ [aws 插件](#rabbitmq-aws-plugin)
+ [JMS 话题交换插件](#rabbitmq-jms-topic-exchange-plugin)

## RabbitMQ 管理插件
<a name="rabbitmq-management-plugin"></a>

适用于 RabbitMQ 的亚马逊 MQ 支持 RabbitMQ [管理插件，该插件为 RabbitMQ](https://www.rabbitmq.com/management.html) 网络控制台提供了基于 HTTP 的管理 API 以及基于浏览器的用户界面。您可以使用 Web 控制台和管理 API 创建和管理代理用户和策略。

## Shovel 插件
<a name="rabbitmq-shovel-plugin"></a>

适用于 RabbitMQ 的 Amazon MQ 支持 R [abbitMQ 铲子插件，该插件](https://www.rabbitmq.com/shovel.html)允许您将消息从一个代理商的队列和交易所转移到另一个经纪商。您可以使用 shovel 连接松耦合的代理，并将消息从消息负载较重的节点分发出去。

**重要**  
如果 shovel 目标是私有代理，则无法在队列或交换器之间配置 shovel。  
Amazon MQ 不支持使用静态 shovel。

仅支持[动态铲子](https://www.rabbitmq.com/shovel-dynamic.html)。动态铲子是使用运行时参数配置的，可以通过客户端连接以编程方式随时启动和停止。例如，使用 RabbitMQ 管理 API，您可以向以下 API 端点创建 PUT 请求来配置动态铲子。在示例中，\$1vhost\$1 可以替换为代理虚拟主机的名称，\$1name\$1 可以替换为新的动态铲子的名称。

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

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

```
{
"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-west2.amazonaws.com:5671",
"dest-queue": "destination-queue-name"
}
}
```

## 联合插件
<a name="rabbitmq-federation-plugin"></a>

亚马逊 MQ 支持使用 [Rabbit](https://www.rabbitmq.com/federation.html) MQ 联合插件的联合交换和队列。通过联合，您可以在各个代理上的队列、交换器和消费者之间复制消息流。联合队列和交易所使用 point-to-point链接连接到其他经纪商中的对等体。默认情况下，联合交换器只路由一次消息，而联合队列可以根据使用者的需要多次移动消息。

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

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

例如，通过管理 API，您可以执行以下操作来配置联合。
+ 配置一个或多个定义到其他节点的联合连接的上游。您可以使用 RabbitMQ Web 控制台或管理 API 定义联合连接。使用管理 API，您可以使用以下请求正文向/ api/parameters/federation-upstream/%2f/myupstream 创建一个 POST 请求。

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

  ```
  {"pattern":"^amq\.", "definition":{"federation-upstream-set":"all"}, "apply-to":"exchanges"}
  ```
**注意**  
请求正文假设服务器上的交换以 amq 开头命名。使用正则表达式 ^amq\$1. 将确保所有名称以 “amq” 开头的交易所启用联合。您的 RabbitMQ 服务器上的交换器可以不同的名称命名。

## 一致性哈希交换器插件
<a name="rabbitmq-consistent-hash-exchange"></a>

适用于 RabbitMQ 的亚马逊 MQ 支持 RabbitMQ 一致哈希交换[类型插件](https://github.com/rabbitmq/rabbitmq-consistent-hash-exchange)。一致性哈希交换器根据通过消息的路由键计算的哈希值将消息路由到队列。如果提供合理均匀的路由密钥，一致性哈希交换可以在队列之间合理均匀地分发消息。

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

## OAuth 2.0 插件
<a name="rabbitmq-oauth-plugin"></a>

[适用于 RabbitMQ 的亚马逊 MQ 支持 2 身份验证后OAuth 端插件。](https://github.com/rabbitmq/rabbitmq-auth-backend-oauth2)此插件根据您的经纪人配置有条件地启用。启用后，此插件提供 OAuth 2.0 身份验证和授权，并集成到外部 OAuth 2.0 身份提供商，用于集中用户管理和访问控制。有关 OAuth 2.0 身份验证的更多信息，请参阅[OAuth 2.0 身份验证和授权](oauth-for-amq-for-rabbitmq.md)。

## LDAP插件
<a name="rabbitmq-ldap-plugin"></a>

[适用于 RabbitMQ 的亚马逊 MQ 支持 LDAP 身份验证后端插件。](https://github.com/rabbitmq/rabbitmq-auth-backend-ldap)此插件根据您的经纪人配置有条件地启用。启用后，此插件提供 LDAP 身份验证和授权，并集成到外部 LDAP 目录服务，用于集中用户身份验证和授权。有关 LDAP 身份验证的更多信息，请参阅[LDAP 身份验证和授权](ldap-for-amq-for-rabbitmq.md)。

## HTTP 插件
<a name="rabbitmq-http-plugin"></a>

[适用于 RabbitMQ 的亚马逊 MQ 支持 HTTP 身份验证后端插件。](https://github.com/rabbitmq/rabbitmq-auth-backend-http)此插件根据您的经纪人配置有条件地启用。启用后，此插件提供 HTTP 身份验证和授权，并集成到外部 HTTP 服务器，用于集中用户身份验证和授权。有关 HTTP 身份验证的更多信息，请参阅[HTTP 身份验证和授权](http-for-amq-for-rabbitmq.md)。

**注意**  
HTTP 身份验证插件仅适用于适用于 RabbitMQ 版本 4 及更高版本的亚马逊 MQ。

## SSL 证书插件
<a name="rabbitmq-ssl-plugin"></a>

亚马逊 MQ 支持 RabbitMQ 经纪商的双向 TLS (mTLS)。[SSL 身份验证插件](https://github.com/rabbitmq/rabbitmq-auth-mechanism-ssl)使用来自 mTLS 连接的客户端证书对用户进行身份验证。此插件根据您的经纪人配置有条件地启用。启用后，它使用 X.509 客户端证书提供基于证书的身份验证，以实现强身份验证，而无需通过网络传输凭据。有关 SSL 证书身份验证的更多信息，请参阅[SSL 证书身份验证](ssl-for-amq-for-rabbitmq.md)。

**注意**  
SSL 证书身份验证插件仅适用于适用于 RabbitMQ 版本 4 及更高版本的亚马逊 MQ。

## aws 插件
<a name="rabbitmq-aws-plugin"></a>

根据您的[代理配置，亚马逊 MQ 有条件地为 RabbitMQ 启用 aws 插件](https://github.com/rabbitmq/rabbitmq-aws)。此社区插件由 Amazon MQ 开发和维护，可 AWS ARNs 在 RabbitMQ 配置设置中使用 AWS 服务安全地检索凭证和证书。有关 ARN 支持的更多信息，请参阅。[RabbitMQ 配置中支持 ARN](arn-support-rabbitmq-configuration.md)

## JMS 话题交换插件
<a name="rabbitmq-jms-topic-exchange-plugin"></a>

亚马逊 [MQ 始终为 RabbitMQ 启用 JMS 主题交换插件](https://github.com/rabbitmq/rabbitmq-server/tree/main/deps/rabbitmq_jms_topic_exchange)。它与 [RabbitMQ JMS 客户端配合使用，允许新的和现有的 JMS](https://github.com/rabbitmq/rabbitmq-jms-client) 应用程序连接到 RabbitMQ 版的 Amazon MQ。

**注意**  
JMS Topic Exchange 插件仅适用于适用于 RabbitMQ 版本 4 及更高版本的亚马逊 MQ。它默认处于启用状态，但只有在使用 RabbitMQ JMS 客户端运行 JMS 工作负载时才会激活。