[Solo PaaS]{class="badge informative" title="Applicabile solo ai progetti Adobe Commerce on Cloud (infrastruttura PaaS gestita da Adobe) e ai progetti on-premise."}

Configura il servizio ActiveMQ

MQF è un sistema di Adobe Commerce che consente a un modulo di pubblicare messaggi nelle code. Definisce inoltre i consumatori che ricevono i messaggi in modo asincrono.

MQF può utilizzare ActiveMQ Artemis come gestore di messaggistica, che fornisce una piattaforma scalabile per l'invio e la ricezione di messaggi. Include inoltre un meccanismo per l’archiviazione dei messaggi non consegnati. ActiveMQ Artemis supporta il protocollo STOMP (Streaming Text Oriented Messaging Protocol) per i messaggi.

ActiveMQ Artemis è disponibile come alternativa a RabbitMQ per la gestione delle code di messaggi. È particolarmente utile quando si necessita di funzionalità specifiche di ActiveMQ o si desidera utilizzare il protocollo STOMP.

IMPORTANT
Se preferisci utilizzare un servizio di broker di messaggi esistente, come ActiveMQ, invece di affidarti ad Adobe Commerce sull'infrastruttura cloud per crearlo, utilizza la variabile di ambiente QUEUE_CONFIGURATION per connettersi al tuo sito.

Utilizzare le istruzioni seguenti per la configurazione del servizio negli ambienti di integrazione Pro e negli ambienti Starter, incluso il ramo master.

NOTE
Invia un ticket di supporto Adobe Commerce per modificare la configurazione del servizio negli ambienti di produzione e staging di Pro.

Per abilitare ActiveMQ Artemis:

  1. Aggiungere il nome, il tipo e il valore del disco richiesti (in MB) al file .magento/services.yaml insieme alla versione di ActiveMQ installata.

    code language-yaml
    activemq-artemis:
        type: activemq-artemis:<version>
        disk: 1024
    
  2. Configurare le relazioni nel file .magento.app.yaml.

    code language-yaml
    relationships:
        activemq-artemis: "activemq-artemis:activemq-artemis"
    
  3. Aggiungi, esegui il commit e invia le modifiche al codice.

    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. Verificare le relazioni del servizio.

TIP
Dopo la configurazione iniziale del servizio, è possibile modificare la versione del software per un servizio installato aggiornando i file di configurazione services.yaml e .magento.app.yaml. Per informazioni sull'aggiornamento o il downgrade di un servizio, vedere Modifica versione del servizio.

Connetti ad ActiveMQ per il debug

A scopo di debug, è possibile connettersi direttamente a un’istanza del servizio in uno dei seguenti modi:

  • Connettersi dall’ambiente di sviluppo locale
  • Connettersi dall’applicazione
  • Connessione dall'applicazione PHP

Connettersi dall’ambiente di sviluppo locale

  1. Accedere a magento-cloud CLI e al progetto:

    code language-bash
    magento-cloud login
    
  2. Controllare l'ambiente con ActiveMQ Artemis installato e configurato.

    code language-bash
    magento-cloud environment:checkout <environment-id>
    
  3. Utilizza SSH per connettersi all’ambiente Cloud:

    code language-bash
    magento-cloud ssh
    
  4. Recupera i dettagli della connessione ActiveMQ e le credenziali di accesso dalla variabile $MAGENTO_CLOUD_RELATIONSHIPS:

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

    o

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

    Nella risposta, trovare le informazioni di ActiveMQ. Il nome della relazione dipende dalla configurazione effettuata nel file .magento.app.yaml. Ad esempio, se hai utilizzato activemq-artemis come nome di relazione:

    code language-json
    {
       "activemq-artemis" : [
          {
             "password" : "guest",
             "ip" : "246.0.129.2",
             "scheme" : "stomp",
             "port" : 61616,
             "host" : "activemq-artemis.internal",
             "username" : "guest"
          }
       ]
    }
    
  5. Abilita l'inoltro porta locale ad ActiveMQ (se il progetto si trova in un'area diversa, ad esempio l'area US-3, EU-5 o AP-3, sostituire us-3/eu-5/ap-3 con us)

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

    Un esempio per accedere alla console Web ActiveMQ Artemis in 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 utilizza la porta 61616 per la messaggistica STOMP e la porta 8161 per la console web.
  6. Mentre la sessione è aperta, è possibile accedere alla console Web ActiveMQ Artemis all'indirizzo http://localhost:8161 utilizzando il nome utente e la password della variabile MAGENTO_CLOUD_RELATIONSHIPS.

Connettersi dall’applicazione

Per connettersi ad ActiveMQ in esecuzione in un'applicazione, installare una libreria client STOMP nell'applicazione PHP.

Connessione dall'applicazione PHP

Per connettersi ad ActiveMQ utilizzando l'applicazione PHP, aggiungere una libreria PHP STOMP alla struttura di origine. Adobe Commerce utilizza il protocollo STOMP per la comunicazione ActiveMQ e la configurazione viene impostata automaticamente durante la distribuzione quando ActiveMQ Artemis viene rilevato come servizio configurato.

Supporto protocollo

ActiveMQ Artemis in Adobe Commerce su infrastrutture cloud utilizza il protocollo STOMP (Streaming Text Oriented Messaging Protocol):

  • STOMP: protocollo di messaggistica utilizzato per le operazioni in coda (porta 61616)
  • Console web: interfaccia di gestione accessibile tramite HTTP (porta 8161)

Differenze rispetto a RabbitMQ

Sebbene sia ActiveMQ Artemis che RabbitMQ fungano da broker di messaggi per Adobe Commerce, esistono alcune differenze:

  • Protocollo: ActiveMQ Artemis utilizza il protocollo STOMP, mentre RabbitMQ utilizza AMQP
  • Configurazione: quando è configurato ActiveMQ Artemis, Adobe Commerce utilizza automaticamente il protocollo STOMP
  • Priorità: se sono configurati sia ActiveMQ che RabbitMQ, ActiveMQ ha la precedenza per le operazioni basate su STOMP, mentre le operazioni AMQP utilizzano RabbitMQ
  • Console Web: ActiveMQ fornisce una console di gestione basata sul Web per il monitoraggio di code e messaggi

Configurazione coda

Quando ActiveMQ Artemis è configurato come servizio, Adobe Commerce configura automaticamente il sistema di coda per utilizzare il protocollo STOMP. La configurazione viene scritta nel file app/etc/env.php durante la distribuzione:

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

Se necessario, è possibile eseguire l'override di questa configurazione utilizzando la variabile di ambiente QUEUE_CONFIGURATION.

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