Configuration du service ActiveMQ
Le Message Queue Framework (MQF) est un système d’Adobe Commerce qui permet à un module de publier des messages dans les files d’attente. Il définit également les consommateurs qui reçoivent les messages de manière asynchrone.
Le MQF peut utiliser ActiveMQ Artemis comme courtier de messagerie, ce qui fournit une plateforme évolutive pour envoyer et recevoir des messages. Il comprend également un mécanisme de stockage des messages non diffusés. ActiveMQ Artemis prend en charge le protocole STOMP (Streaming Text Oriented Messaging Protocol) pour la messagerie.
ActiveMQ Artemis est disponible comme alternative à RabbitMQ pour gérer les files d’attente de messages. Il est particulièrement utile lorsque vous avez besoin de fonctionnalités spécifiques à ActiveMQ ou que vous souhaitez utiliser le protocole STOMP.
QUEUE_CONFIGURATION
pour le connecter à votre site.Utilisez les instructions suivantes pour la configuration du service sur les environnements Pro Integration et les environnements de démarrage, y compris la branche master
.
Pour activer ActiveMQ Artemis :
-
Ajoutez le nom, le type et la valeur de disque requis (en Mo) au fichier
.magento/services.yaml
avec la version ActiveMQ installée.code language-yaml activemq-artemis: type: activemq-artemis:<version> disk: 1024
-
Configurez les relations dans le fichier
.magento.app.yaml
.code language-yaml relationships: activemq-artemis: "activemq-artemis:activemq-artemis"
-
Ajouter, valider et transmettre vos modifications de code.
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
et .magento.app.yaml
. Consultez Modifier la version du service pour obtenir des conseils sur la mise à niveau ou la rétrogradation d’un service.Se connecter à ActiveMQ pour le débogage
À des fins de débogage, vous pouvez vous connecter directement à une instance de service de l’une des manières suivantes :
- Connexion à partir de votre environnement de développement local
- Connexion depuis l'application
- Connexion depuis votre application PHP
Connexion à partir de votre environnement de développement local
-
Connectez-vous à l’interface de ligne de commande
magento-cloud
et au projet :code language-bash magento-cloud login
-
Consultez l’environnement avec ActiveMQ Artemis installé et configuré.
code language-bash magento-cloud environment:checkout <environment-id>
-
Utilisez SSH pour vous connecter à l’environnement cloud :
code language-bash magento-cloud ssh
-
Récupérez les détails de la connexion ActiveMQ et les informations d’identification de connexion à partir de la variable $MAGENTO_CLOUD_RELATIONSHIPS :
code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
ou
code language-bash php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"])));'
Dans la réponse, recherchez les informations ActiveMQ. Le nom de la relation dépend de la manière dont vous l’avez configurée dans votre fichier
.magento.app.yaml
. Par exemple, si vous avez utiliséactivemq-artemis
comme nom de relation :code language-json { "activemq-artemis" : [ { "password" : "guest", "ip" : "246.0.129.2", "scheme" : "stomp", "port" : 61616, "host" : "activemq-artemis.internal", "username" : "guest" } ] }
-
Activez le transfert du port local vers ActiveMQ (si votre projet est situé dans une autre région telle que US-3, EU-5 ou AP-3, remplacez
us-3
/eu-5
/ap-3
parus
).code language-bash ssh -L <port-number>:activemq-artemis.internal:<port-number> <project-ID>-<branch-ID>@ssh.us.magentosite.cloud
Voici un exemple d’accès à la console web ActiveMQ Artemis à l’adresse
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 utilise le port 61616 pour la messagerie STOMP et le port 8161 pour la console web. -
Lorsque la session est ouverte, vous pouvez accéder à la console web ActiveMQ Artemis à l’adresse
http://localhost:8161
à l’aide du nom d’utilisateur et du mot de passe de la variable MAGENTO_CLOUD_RELATIONSHIPS .
Connexion depuis l'application
Pour vous connecter à ActiveMQ exécuté dans une application, installez une bibliothèque cliente STOMP dans votre application PHP.
Connexion depuis votre application PHP
Pour vous connecter à ActiveMQ à l'aide de votre application PHP, ajoutez une bibliothèque PHP STOMP à votre arborescence source. Adobe Commerce utilise le protocole STOMP pour la communication ActiveMQ et la configuration est automatiquement définie lors du déploiement lorsque ActiveMQ Artemis est détecté comme service configuré.
Prise en charge des protocoles
ActiveMQ Artemis dans Adobe Commerce sur les infrastructures cloud utilise le protocole STOMP (Streaming Text Oriented Messaging Protocol) :
- STOMP : protocole de messagerie utilisé pour les opérations de file d’attente (port 61616)
- Console web : interface de gestion accessible via HTTP (port 8161)
Différences par rapport à RabbitMQ
Bien que ActiveMQ Artemis et RabbitMQ servent de courtiers en messages pour Adobe Commerce, il existe quelques différences :
- Protocol : ActiveMQ Artemis utilise le protocole STOMP, tandis que RabbitMQ utilise AMQP
- Configuration : lorsqu’ActiveMQ Artemis est configuré, Adobe Commerce utilise automatiquement le protocole STOMP
- Priorité : si ActiveMQ et RabbitMQ sont configurés, ActiveMQ est prioritaire pour les opérations STOMP, tandis que les opérations AMQP utilisent RabbitMQ
- Console web : ActiveMQ fournit une console de gestion web pour la surveillance des files d’attente et des messages
Configuration de la file d’attente
Lorsqu’ActiveMQ Artemis est configuré en tant que service, Adobe Commerce configure automatiquement le système de file d’attente pour utiliser le protocole STOMP. La configuration est enregistrée dans le fichier app/etc/env.php
lors du déploiement :
'queue' => [
'stomp' => [
'host' => 'activemq-artemis.internal',
'port' => '61616',
'user' => 'guest',
'password' => 'guest'
],
'default_connection' => 'stomp'
]
Si nécessaire, vous pouvez remplacer cette configuration à l’aide de la variable d’environnement QUEUE_CONFIGURATION
.