外掛程式 - Amazon MQ

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

外掛程式

Amazon MQ for RabbitMQ 支援 RabbitMQ 管理外掛程式,其為管理 API 和 RabbitMQ Web 主控台提供支援。您可以使用 Web 主控台和管理 API 來建立和管理代理程式使用者和政策。

除了管理外掛程式,Amazon MQ for RabbitMQ 還支援下列外掛程式。

Shovel 外掛程式

Amazon MQ 受管代理程式支援 RabbitMQ shovel,可讓您將訊息從一個代理程式執行個體移到另一個代理程式執行個體上的佇列和交換。您可以使用 shovel 連接鬆散耦合的代理程式,並將從具有較重訊息負載的節點分發出訊息。

Amazon MQ 受管 RabbitMQ 代理程式支援動態 shovel。動態 shovel 使用執行時間參數進行設定,並可經由用戶端連線以程式設計方式隨時啟動和停止。例如,使用 RabbitMQ 管理 API,您可以對以下 API 端點建立 PUT 要求以設定動態 shovel。在範例中,{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。

如需使用動態 shovel 的詳細資訊,請參閱 RabbitMQ 動態 shovel 外掛程式

注意

Amazon MQ 不支援使用靜態 shovel。

聯合外掛程式

Amazon MQ 支援聯合交換和佇列。透過聯合,您可以在個別代理程式上的佇列、交換和消費者之間複寫訊息流程。聯合隊列和交易所使用 point-to-point 鏈接連接到其他經紀人中的對等。聯合交換時,預設會路由傳送訊息一次,聯合佇列可視消費者的需要多次移動訊息。

您可以使用聯合來允許下游代理程式從上游的交換或佇列中取用訊息。您可以使用 RabbitMQ Web 主控台或管理 API,啟用下游代理程式的聯合。

重要

如果上游佇列或交換處於私有代理程式中,則無法設定聯合。您只能在公有代理程式中的佇列或交換之間,或者在公有代理程式中的上游佇列或交換與私有代理程式中的下游佇列或交換之間設定聯合。

例如,使用管理 API,您可以執行下列動作來設定同盟。

  • 設定一或多個上游,以定義與其他節點的聯合連線。您可以使用 RabbitMQ Web 主控台或管理 API,定義聯合連線。使用管理 API,您可以使用以下要求主體來建立對 /api/parameters/federation-upstream/%2f/my-upstreamPOST 要求。

    {"value":{"uri":"amqp://server-name","expires":3600000}}
  • 設定政策,讓您的佇列或交換變得聯合。您可以使用 RabbitMQ Web 主控台或管理 API 來設定政策。使用管理 API,您可以使用以下要求主體來建立對 /api/policies/%2f/federate-mePOST 要求。

    {"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