

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 外掛程式
<a name="rabbitmq-basic-elements-plugins"></a>

Amazon MQ for RabbitMQ 也支援下列外掛程式。
+ [RabbitMQ 管理外掛程式](#rabbitmq-management-plugin)
+ [Shovel 外掛程式](#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>

Amazon MQ for RabbitMQ 支援 [RabbitMQ 管理外掛程式](https://www.rabbitmq.com/management.html)，該外掛程式提供 HTTP 型管理 API，以及 RabbitMQ Web 主控台的瀏覽器型 UI。您可以使用 Web 主控台和管理 API 來建立和管理代理程式使用者和政策。

## Shovel 外掛程式
<a name="rabbitmq-shovel-plugin"></a>

Amazon MQ for RabbitMQ 支援 [RabbitMQ shovel 外掛程式](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 可以取代為代理程式的 vhost 名稱，而 \$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>

Amazon MQ 支援使用 [RabbitMQ 聯合外掛程式的聯合](https://www.rabbitmq.com/federation.html)交換和佇列。透過聯合，您可以在個別代理程式上的佇列、交換和消費者之間複寫訊息流程。聯合佇列和交換使用點對點連結來連線到其他代理程式中的對等節點。聯合交換時，預設會路由傳送訊息一次，聯合佇列可視消費者的需要多次移動訊息。

您可以使用聯合來允許下游代理程式從上游的交換或佇列中取用訊息。您可以使用 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>

Amazon MQ for RabbitMQ 支援 [RabbitMQ 一致性雜湊交換類型外掛程式](https://github.com/rabbitmq/rabbitmq-consistent-hash-exchange)。一致雜湊交換會根據從訊息路由索引鍵計算的雜湊值，將訊息路由傳送到佇列。假設有合理平均的路由索引鍵，一致雜湊交換可以在佇列之間合理地平均分配訊息。

對於繫結到一致雜湊交換的佇列，繫結索引鍵為數字即字串，可決定每個佇列的繫結權重。具較高繫結權數的佇列會從其繫結的一致雜湊交換接收分配比例較高的訊息。在一致雜湊交換拓撲中，發行者可以直接將訊息發佈至交換，但是消費者必須明確設定為取用特定佇列中的訊息。

## OAuth 2.0 外掛程式
<a name="rabbitmq-oauth-plugin"></a>

Amazon MQ for RabbitMQ 支援 [OAuth 2 身分驗證後端外掛程式](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>

Amazon MQ for RabbitMQ 支援 [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>

Amazon MQ for RabbitMQ 支援 [HTTP 身分驗證後端外掛程式](https://github.com/rabbitmq/rabbitmq-auth-backend-http)。此外掛程式會根據您的代理程式組態有條件地啟用。啟用時，此外掛程式會提供 HTTP 身分驗證和授權，與外部 HTTP 伺服器整合，以進行集中式使用者身分驗證和授權。如需 HTTP 身分驗證的詳細資訊，請參閱 [HTTP 身分驗證和授權](http-for-amq-for-rabbitmq.md)。

**注意**  
HTTP 身分驗證外掛程式僅適用於 Amazon MQ for RabbitMQ 第 4 版及更新版本。

## SSL 憑證外掛程式
<a name="rabbitmq-ssl-plugin"></a>

Amazon 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 憑證身分驗證外掛程式僅適用於 Amazon MQ for RabbitMQ 第 4 版及更高版本。

## aws 外掛程式
<a name="rabbitmq-aws-plugin"></a>

[aws 外掛程式](https://github.com/rabbitmq/rabbitmq-aws)由 Amazon MQ for RabbitMQ 根據您的代理程式組態有條件地啟用。此社群外掛程式由 Amazon MQ 開發和維護，可在 RabbitMQ 組態設定中使用 AWS ARNs 從 AWS 服務安全地擷取憑證和憑證。如需 ARN 支援的詳細資訊，請參閱 [RabbitMQ 組態中的 ARN 支援](arn-support-rabbitmq-configuration.md)。

## JMS 主題交換外掛程式
<a name="rabbitmq-jms-topic-exchange-plugin"></a>

Amazon MQ for RabbitMQ 一律會啟用 [JMS Topic Exchange 外掛程式](https://github.com/rabbitmq/rabbitmq-server/tree/main/deps/rabbitmq_jms_topic_exchange)。它可與 [RabbitMQ JMS 用戶端](https://github.com/rabbitmq/rabbitmq-jms-client)搭配使用，以允許新的和現有的 JMS 應用程式連線到 Amazon MQ for RabbitMQ。

**注意**  
JMS Topic Exchange 外掛程式僅適用於 Amazon MQ for RabbitMQ 第 4 版及更新版本。它預設為啟用，但只有在使用 RabbitMQ JMS 用戶端執行 JMS 工作負載時才會啟用。