Einrichten des RabbitMQ-Dienstes

Das Message Queue Framework (MQF) ist ein System in Adobe Commerce, das es einem Modul ermöglicht, Nachrichten in Warteschlangen zu veröffentlichen. Außerdem werden die Verbraucher definiert, die die Nachrichten asynchron empfangen.

Der MQF verwendet RabbitMQ als Messaging-Broker, der eine skalierbare Plattform zum Senden und Empfangen von Nachrichten bietet. Es enthält auch einen Mechanismus zum Speichern nicht zugestellter Nachrichten. RabbitMQ basiert auf der AMQP-Spezifikation 0.9.1 (Advanced Message Queuing Protocol).

WARNING
Wenn Sie lieber einen vorhandenen AMQP-basierten Dienst wie RabbitMQ verwenden, anstatt sich bei der Erstellung auf die Cloud-Infrastruktur von Adobe Commerce zu verlassen, verwenden Sie die Umgebungsvariable QUEUE_CONFIGURATION , um ihn mit Ihrer Site zu verbinden.

Verwenden Sie die folgenden Anweisungen für die Diensteinrichtung in Pro Integration-Umgebungen und Starter-Umgebungen, einschließlich der Verzweigung master .

NOTE
Senden Sie ein Adobe Commerce-Support-Ticket , um die Dienstkonfiguration in Pro Production- und Staging-Umgebungen zu ändern.

So aktivieren Sie RabbitMQ:

  1. Fügen Sie den erforderlichen Namen, Typ und Festplattenwert (in MB) zusammen mit der installierten RabbitMQ-Version zur Datei ".magento/services.yaml"hinzu.

    code language-yaml
    rabbitmq:
        type: rabbitmq:<version>
        disk: 1024
    
  2. Konfigurieren Sie die Beziehungen in der Datei ".magento.app.yaml".

    code language-yaml
    relationships:
        rabbitmq: "rabbitmq:rabbitmq"
    
  3. Fügen Sie Code-Änderungen hinzu, übertragen Sie sie und übertragen Sie sie.

    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. Überprüfen Sie die Dienstbeziehungen.

TIP
Nach der Ersteinrichtung des Dienstes können Sie die Softwareversion für einen installierten Dienst ändern, indem Sie die Konfigurationsdateien services.yaml und .magento.app.yaml aktualisieren. Eine Anleitung zum Aktualisieren oder Herunterstufen eines Dienstes finden Sie unter Dienstversion ändern .

Verbindung zu RabbitMQ zum Debugging herstellen

Für Debugging-Zwecke ist es nützlich, eine direkte Verbindung zu einer Dienstinstanz auf eine der folgenden Arten herzustellen:

  • Verbindung zur lokalen Entwicklungsumgebung herstellen
  • Verbindung mit der Anwendung herstellen
  • Verbinden über eine PHP-Anwendung

Verbindung zur lokalen Entwicklungsumgebung herstellen

  1. Melden Sie sich bei der CLI und dem Projekt magento-cloud an:

    code language-bash
    magento-cloud login
    
  2. Sehen Sie sich die Umgebung an, in der RabbitMQ installiert und konfiguriert ist.

    code language-bash
    magento-cloud environment:checkout <environment-id>
    
  3. Verwenden Sie SSH, um eine Verbindung zur Cloud-Umgebung herzustellen:

    code language-bash
    magento-cloud ssh
    
  4. Rufen Sie die RabbitMQ-Verbindungsdetails und Anmeldedaten aus der Variable $MAGENTO_CLOUD_RELATIONSHIPS ab:

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

    oder

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

    Suchen Sie in der Antwort die RabbitMQ-Informationen, beispielsweise:

    code language-json
    {
       "rabbitmq" : [
          {
             "password" : "guest",
             "ip" : "246.0.129.2",
             "scheme" : "amqp",
             "port" : 5672,
             "host" : "rabbitmq.internal",
             "username" : "guest"
          }
       ]
    }
    
  5. Aktivieren Sie die lokale Anschlussweiterleitung an RabbitMQ (wenn sich Ihr Projekt in einer anderen Region wie US-3, EU-5 oder AP-3 befindet, ersetzen Sie us-3/eu-5/ap-3 durch us).

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

    Ein Beispiel für den Zugriff auf die RabbitMQ Management-Webschnittstelle unter http://localhost:15672:

    code language-bash
    ssh -L 15672:rabbitmq.internal:15672 <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
    
  6. Während die Sitzung geöffnet ist, können Sie einen von Ihnen ausgewählten RabbitMQ-Client von Ihrer lokalen Workstation aus starten, der für die Verbindung mit dem localhost:<portnumber> konfiguriert ist. Verwenden Sie dazu die Portnummer, den Benutzernamen und die Kennwortinformationen aus der Variablen MAGENTO_CLOUD_RELATIONSHIPS .

Verbindung mit der Anwendung herstellen

Um eine Verbindung zu RabbitMQ herzustellen, die in einer Anwendung ausgeführt wird, installieren Sie einen Client, z. B. amqp-utils, als Projektabhängigkeit in Ihrer .magento.app.yaml-Datei.

Beispiel:

dependencies:
    ruby:
        amqp-utils: "0.5.1"

Wenn Sie sich bei Ihrem PHP-Container anmelden, geben Sie einen beliebigen amqp--Befehl ein, der zur Verwaltung Ihrer Warteschlangen verfügbar ist.

Verbinden über eine PHP-Anwendung

Um mit Ihrer PHP-Anwendung eine Verbindung zu RabbitMQ herzustellen, fügen Sie eine PHP library in Ihren Quellbaum ein.

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