設定RabbitMQ服務

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

MQF使用RabbitMQ作為傳訊代理人,提供可擴充的平台來傳送及接收訊息。 它也包括儲存未傳遞訊息的機制。 RabbitMQ是以進階訊息佇列通訊協定(AMQP) 0.9.1規格為基礎。

WARNING
如果您偏好使用現有的AMQP型服務(例如RabbitMQ),而不仰賴Adobe Commerce的雲端基礎結構為您建立它,請使用QUEUE_CONFIGURATION環境變數將其連線到您的網站。

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

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

若要啟用RabbitMQ

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

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

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

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

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

連線至RabbitMQ以進行偵錯

為了進行偵錯,建議您以下列其中一種方式直接連線至服務執行個體:

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

從您的本機開發環境連線

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

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

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

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

    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"])));'
    

    在回應中,尋找RabbitMQ資訊,例如:

    code language-json
    {
       "rabbitmq" : [
          {
             "password" : "guest",
             "ip" : "246.0.129.2",
             "scheme" : "amqp",
             "port" : 5672,
             "host" : "rabbitmq.internal",
             "username" : "guest"
          }
       ]
    }
    
  5. 啟用本機連線埠轉送至RabbitMQ (如果您的專案位於其他區域,例如US-3、EU-5或AP-3區域,請以us-3/eu-5/ap-3取代us

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

    http://localhost:15672存取RabbitMQ管理Web介面的範例是:

    code language-bash
    ssh -L 15672:rabbitmq.internal:15672 <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
    
  6. 在工作階段開啟時,您可以從本機工作站啟動您選擇的RabbitMQ使用者端,設定為使用MAGENTO_CLOUD_RELATIONSHIPS變數的連線埠號碼、使用者名稱和密碼資訊連線至localhost:<portnumber>

從應用程式連線

若要連線到應用程式中執行的RabbitMQ,請在您的.magento.app.yaml檔案中安裝使用者端(例如amqp-utils)作為專案相依性。

例如,

dependencies:
    ruby:
        amqp-utils: "0.5.1"

當您登入PHP容器時,您輸入任何amqp-命令可用於管理您的佇列。

從您的PHP應用程式連線

若要使用PHP應用程式連線到RabbitMQ,請將PHP程式庫新增到來源樹狀結構中。

recommendation-more-help
05f2f56e-ac5d-4931-8cdb-764e60e16f26