[Nur PaaS]{class="badge informative" title="Gilt nur für Adobe Commerce in Cloud-Projekten (von Adobe verwaltete PaaS-Infrastruktur) und lokale Projekte."}

Einrichten ActiveMQ Services

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 erhalten.

Der MQF kann ActiveMQ Artemis als Messaging-Broker verwenden, der eine skalierbare Plattform für das Senden und Empfangen von Nachrichten bietet. Sie enthält auch einen Mechanismus zum Speichern nicht zugestellter Nachrichten. ActiveMQ Artemis unterstützt das STOMP-Protokoll (Streaming Text Oriented Messaging Protocol) für Messaging.

ActiveMQ Artemis ist als Alternative zu RabbitMQ für die Verwaltung von Nachrichtenwarteschlangen verfügbar. Dies ist besonders nützlich, wenn Sie für ActiveMQ spezifische Funktionen benötigen oder das STOMP-Protokoll verwenden möchten.

IMPORTANT
Wenn Sie einen vorhandenen Message Broker-Dienst wie ActiveMQ bevorzugen, 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 Einrichtung des Services in Pro Integration-Umgebungen und Starter-Umgebungen, einschließlich der master.

NOTE
Senden eines Adobe Commerce Support-Tickets um die Service-Konfiguration in Pro-Produktions- und Staging-Umgebungen zu ändern.

So aktivieren Sie ActiveMQ Artemis:

  1. Fügen Sie den erforderlichen Namen, den erforderlichen Typ und den erforderlichen Datenträgerwert (in MB) zusammen mit der installierten ActiveMQ-Version zur .magento/services.yaml hinzu.

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

    code language-yaml
    relationships:
        activemq-artemis: "activemq-artemis:activemq-artemis"
    
  3. Code-Änderungen hinzufügen, übertragen und per Push übertragen.

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

TIP
Nach der Ersteinrichtung des Service können Sie die Softwareversion für einen installierten Service ändern, indem Sie die services.yaml und .magento.app.yaml Konfigurationsdateien aktualisieren. Unter Ändern der Service-Version finden Sie Anleitungen zum Aktualisieren oder Herunterstufen eines Services.

Verbinden mit ActiveMQ zum Debuggen

Zum Debuggen können Sie eine direkte Verbindung zu einer Service-Instanz auf eine der folgenden Arten herstellen:

  • Verbinden über Ihre lokale Entwicklungsumgebung
  • Verbindung mit der Anwendung herstellen
  • Verbinden von Ihrer PHP-Anwendung

Verbinden über Ihre lokale Entwicklungsumgebung

  1. Melden Sie sich bei der magento-cloud CLI an und führen Sie folgendes Projekt aus:

    code language-bash
    magento-cloud login
    
  2. Überprüfen Sie die Umgebung, in der ActiveMQ Artemis installiert und konfiguriert ist.

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

    code language-bash
    magento-cloud ssh
    
  4. Rufen Sie die ActiveMQ-Verbindungsdetails und Anmeldedaten aus der $MAGENTO_CLOUD_RELATIONSHIPS-Variablen 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 ActiveMQ-Informationen. Der Name der Beziehung hängt davon ab, wie Sie ihn in Ihrer .magento.app.yaml-Datei konfiguriert haben. Wenn Sie beispielsweise activemq-artemis als Beziehungsnamen verwendet haben:

    code language-json
    {
       "activemq-artemis" : [
          {
             "password" : "guest",
             "ip" : "246.0.129.2",
             "scheme" : "stomp",
             "port" : 61616,
             "host" : "activemq-artemis.internal",
             "username" : "guest"
          }
       ]
    }
    
  5. Aktivieren der lokalen Port-Weiterleitung an ActiveMQ (wenn sich Ihr Projekt in einer anderen Region wie z. B. 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>:activemq-artemis.internal:<port-number> <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
    

    Ein Beispiel für den Zugriff auf die ActiveMQ Artemis-Web-Konsole unter http://localhost:8161:

    code language-bash
    ssh -L 8161:activemq-artemis.internal:8161 <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
    
    note note
    NOTE
    ActiveMQ Artemis verwendet Port 61616 für STOMP-Messaging und Port 8161 für die Web-Konsole.
  6. Solange die Sitzung geöffnet ist, können Sie auf die ActiveMQ Artemis-Web-Konsole unter http://localhost:8161 zugreifen, indem Sie den Benutzernamen und das Kennwort aus der Variablen MAGENTO_CLOUD_RELATIONSHIPS verwenden.

Verbindung mit der Anwendung herstellen

Um eine Verbindung zu ActiveMQ herzustellen, das in einer Anwendung ausgeführt wird, installieren Sie eine STOMP-Client-Bibliothek in Ihrer PHP-Anwendung.

Verbinden von Ihrer PHP-Anwendung

Um ActiveMQ mit Ihrer PHP-Anwendung zu verbinden, fügen Sie Ihrer Quellstruktur eine PHP STOMP-Bibliothek hinzu. Adobe Commerce verwendet das STOMP-Protokoll für die ActiveMQ-Kommunikation. Die Konfiguration wird während der Bereitstellung automatisch eingerichtet, wenn ActiveMQ Artemis als konfigurierter Service erkannt wird.

Protokollunterstützung

ActiveMQ Artemis in Adobe Commerce verwendet in der Cloud-Infrastruktur das STOMP-Protokoll (Streaming Text Oriented Messaging Protocol):

  • STOMP: Das für Warteschlangenvorgänge verwendete Messaging-Protokoll (Port 61616)
  • Web-Konsole: Verwaltungsschnittstelle, auf die über HTTP zugegriffen werden kann (Port 8161)

Unterschiede zu RabbitMQ

Während sowohl ActiveMQ Artemis als auch RabbitMQ als Nachrichtenvermittler für Adobe Commerce dienen, gibt es einige Unterschiede:

  • Protokoll: ActiveMQ Artemis verwendet das STOMP-Protokoll, während RabbitMQ AMQP verwendet
  • Konfiguration: Wenn ActiveMQ Artemis konfiguriert ist, verwendet Adobe Commerce automatisch das STOMP-Protokoll
  • Priorität: Wenn sowohl ActiveMQ als auch RabbitMQ konfiguriert sind, hat ActiveMQ Vorrang für STOMP-basierte Vorgänge, während AMQP-Vorgänge RabbitMQ verwenden
  • Web-Konsole: ActiveMQ bietet eine Web-basierte Verwaltungskonsole zur Überwachung von Warteschlangen und Nachrichten

Warteschlangenkonfiguration

Wenn ActiveMQ Artemis als Dienst konfiguriert ist, konfiguriert Adobe Commerce automatisch das Warteschlangensystem für die Verwendung des STOMP-Protokolls. Die Konfiguration wird während der Bereitstellung in die app/etc/env.php-Datei geschrieben:

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

Sie können diese Konfiguration bei Bedarf mit der Umgebungsvariablen QUEUE_CONFIGURATION überschreiben.

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