[僅限PaaS]{class="badge informative" title="僅適用於雲端專案(Adobe管理的PaaS基礎結構)和內部部署專案的Adobe Commerce 。"}

設定ActiveMQ服務

Message Queue Framework (MQF)是Adobe Commerce中的系統,可讓模組將訊息發佈至佇列。 它也會定義非同步接收訊息的消費者。

MQF可以使用ActiveMQ Artemis做為傳訊代理人,提供可擴充的平台來傳送及接收訊息。 它也包括儲存未傳遞訊息的機制。 ActiveMQ Artemis支援訊息的STOMP (串流文字導向訊息通訊協定)通訊協定。

ActiveMQ Artemis可用作RabbitMQ管理訊息佇列的替代方案。 當您需要ActiveMQ的特定功能或想要使用STOMP通訊協定時,這個功能特別有用。

IMPORTANT
如果您偏好使用現有的訊息代理程式服務(例如ActiveMQ),而不仰賴Adobe Commerce在雲端基礎結構上為您建立它,請使用QUEUE_CONFIGURATION環境變數將其連線到您的網站。

使用下列指示在Pro整合環境與入門環境(包括master分支)上進行服務設定。

NOTE
提交Adobe Commerce支援票證以變更Pro生產和中繼環境上的服務組態。

若要啟用ActiveMQ Artemis

  1. 將所需的名稱、型別和磁碟值(以MB為單位)連同已安裝的ActiveMQ版本新增至.magento/services.yaml檔案。

    code language-yaml
    activemq-artemis:
        type: activemq-artemis:<version>
        disk: 1024
    
  2. 設定.magento.app.yaml檔案中的關聯性。

    code language-yaml
    relationships:
        activemq-artemis: "activemq-artemis:activemq-artemis"
    
  3. 新增、提交和推送您的程式碼變更。

    code language-bash
    git add .magento/services.yaml .magento.app.yaml
    
    code language-bash
    git commit -m "Enable ActiveMQ Artemis service"
    
    code language-bash
    git push origin <branch-name>
    
  4. 驗證服務關係

TIP
初始服務安裝之後,您可以更新services.yaml.magento.app.yaml組態檔,以變更已安裝服務的軟體版本。 請參閱變更服務版本以取得升級或降級服務的指引。

連線到ActiveMQ以進行偵錯

針對偵錯目的,您可以透過下列其中一種方式直接連線至服務執行個體:

  • 從您的本機開發環境連線
  • 從應用程式連線
  • 從您的PHP應用程式連線

從您的本機開發環境連線

  1. 登入magento-cloud CLI與專案:

    code language-bash
    magento-cloud login
    
  2. 檢視已安裝並設定ActiveMQ Artemis的環境。

    code language-bash
    magento-cloud environment:checkout <environment-id>
    
  3. 使用SSH連線至雲端環境:

    code language-bash
    magento-cloud ssh
    
  4. $MAGENTO_CLOUD_RELATIONSHIPS變數擷取ActiveMQ連線詳細資料和登入認證:

    code language-bash
    echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
    

    code language-bash
    php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"])));'
    

    在回應中,尋找ActiveMQ資訊。 關聯性名稱取決於您在.magento.app.yaml檔案中的設定方式。 例如,如果您使用activemq-artemis作為關聯性名稱:

    code language-json
    {
       "activemq-artemis" : [
          {
             "password" : "guest",
             "ip" : "246.0.129.2",
             "scheme" : "stomp",
             "port" : 61616,
             "host" : "activemq-artemis.internal",
             "username" : "guest"
          }
       ]
    }
    
  5. 啟用本機連線埠轉送至ActiveMQ (如果您的專案位於不同的區域,例如US-3、EU-5或AP-3區域,請將us-3替換為eu-5/ap-3/us

    code language-bash
    ssh -L <port-number>:activemq-artemis.internal:<port-number> <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
    

    存取位於http://localhost:8161的ActiveMQ Artemis Web主控台的範例是:

    code language-bash
    ssh -L 8161:activemq-artemis.internal:8161 <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
    
    note note
    NOTE
    ActiveMQ Artemis使用連線埠61616進行STOMP傳訊,並使用連線埠8161進行Web主控台。
  6. 在工作階段開啟時,您可以使用MAGENTO_CLOUD_RELATIONSHIPS變數中的使用者名稱和密碼來存取位於http://localhost:8161的ActiveMQ Artemis網頁主控台。

從應用程式連線

若要連線到應用程式中執行的ActiveMQ,請在PHP應用程式中安裝STOMP使用者端程式庫。

從您的PHP應用程式連線

若要使用PHP應用程式連線到ActiveMQ,請將PHP STOMP程式庫新增到來源樹狀結構中。 Adobe Commerce會使用STOMP通訊協定進行ActiveMQ通訊,而且當ActiveMQ Artemis偵測到已設定的服務時,會在部署期間自動設定設定。

通訊協定支援

雲端基礎結構上Adobe Commerce中的ActiveMQ Artemis使用STOMP (串流文字導向傳訊通訊協定)通訊協定:

  • STOMP:用於佇列作業的傳訊通訊協定(連線埠61616)
  • 網頁主控台:可透過HTTP存取的管理介面(連線埠8161)

與RabbitMQ的差異

雖然ActiveMQ Artemis和RabbitMQ都可作為Adobe Commerce的訊息代理人,但有一些差異:

  • 通訊協定: ActiveMQ Artemis使用STOMP通訊協定,而RabbitMQ使用AMQP
  • 設定:設定ActiveMQ Artemis時,Adobe Commerce會自動使用STOMP通訊協定
  • 優先順序:如果已設定ActiveMQ和RabbitMQ,則ActiveMQ優先於STOMP作業,而AMQP作業則使用RabbitMQ
  • 網頁主控台: ActiveMQ提供網頁式管理主控台,用於監視佇列和訊息

佇列設定

當ActiveMQ Artemis設定為服務時,Adobe Commerce會自動設定佇列系統以使用STOMP通訊協定。 組態會在部署期間寫入app/etc/env.php檔案:

'queue' => [
    'stomp' => [
        'host' => 'activemq-artemis.internal',
        'port' => '61616',
        'user' => 'guest',
        'password' => 'guest'
    ],
    'default_connection' => 'stomp'
]

您可以視需要使用QUEUE_CONFIGURATION環境變數覆寫此設定。

recommendation-more-help
7c2b03ac-000c-497d-aba3-2c6dc720a938