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.
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
.
Per abilitare ActiveMQ Artemis:
-
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
-
Configurare le relazioni nel file
.magento.app.yaml
.code language-yaml relationships: activemq-artemis: "activemq-artemis:activemq-artemis"
-
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>
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
-
Accedere a
magento-cloud
CLI e al progetto:code language-bash magento-cloud login
-
Controllare l'ambiente con ActiveMQ Artemis installato e configurato.
code language-bash magento-cloud environment:checkout <environment-id>
-
Utilizza SSH per connettersi all’ambiente Cloud:
code language-bash magento-cloud ssh
-
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 utilizzatoactivemq-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" } ] }
-
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
conus
)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. -
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
.