[PaaS uniquement]{class="badge informative" title="S’applique uniquement aux projets Adobe Commerce on Cloud (infrastructure PaaS gérée par Adobe) et aux projets On-premise."}

Présentation des files d’attente de messages

Le framework Message Queue (MQF) est un système qui permet à un module de publier des messages dans des files d’attente. Elle définit également les consommateurs qui recevront les messages de manière asynchrone. Le MQF prend en charge plusieurs courtiers de messagerie :

  • RabbitMQ - Courtier de messagerie principal, qui fournit une plateforme évolutive pour l'envoi et la réception de messages. Il comprend un mécanisme de stockage des messages non diffusés et est basé sur la spécification AMQP (Advanced Message Queuing Protocol) 0.9.1 .
  • Apache ActiveMQ Artemis - Un courtier de messagerie alternatif qui utilise le protocole STOMP (Simple Text Oriented Messaging Protocol) pour une messagerie fiable et évolutive. Introduit dans Adobe Commerce 2.4.6 et versions ultérieures.

RabbitMQ (AMQP)

Le diagramme suivant illustre la structure de Message Queue :

Structure de la file d’attente des messages

  • Un éditeur est un composant qui envoie des messages à un échange. Il sait vers quel échange publier et le format des messages qu'il envoie.

  • Un central reçoit les messages des éditeurs et les envoie vers les files d'attente. Bien que RabbitMQ prenne en charge plusieurs types d’échanges, Commerce utilise uniquement les échanges de sujets. Une rubrique comprend une clé de routage, qui contient des chaînes de texte séparées par des points. Le format d’un nom de rubrique est string1.string2 : par exemple, customer.created ou customer.sent.email.

    Le courtier vous permet d’utiliser des caractères génériques lors de la définition de règles pour le transfert de messages. Vous pouvez utiliser un astérisque (*) pour remplacer une chaîne ou un signe dièse (#) pour remplacer 0 ou plusieurs chaînes. Par exemple, customer.* filtrez sur customer.create et customer.delete, mais pas sur customer.sent.email. Toutefois, customer.# filtrez sur customer.create, customer.delete et customer.sent.email.

  • Une file d'attente est une mémoire tampon qui stocke les messages.

  • Un client reçoit des messages. Il sait quelle file d’attente utiliser. Il peut mapper les processeurs du message à une file d’attente spécifique.

Apache ActiveMQ Artemis (STOMP)

Au lieu de RabbitMQ, Adobe Commerce prend également en charge Apache ActiveMQ Artemis en tant que courtier de messagerie utilisant le protocole STOMP (Simple Text Oriented Messaging Protocol).

NOTE
ActiveMQ Artemis a été introduit dans Adobe Commerce 2.4.6 et les versions ultérieures.

Le diagramme suivant illustre le framework STOMP avec les artéfacts ActiveMQ :

Structure STOMP

Composants du framework STOMP

  • Un éditeur est un composant qui envoie des messages vers une destination (file d’attente ou rubrique). Il sait vers quelle destination publier et le format des messages qu’il envoie.

  • Une destination dans STOMP joue un rôle similaire aux échanges dans AMQP, en recevant les messages des éditeurs et en les acheminant. STOMP utilise l’adressage de destination direct avec un modèle de dénomination hiérarchique utilisant des points : par exemple, customer.created ou inventory.updated.

    Adobe Commerce utilise le mode d’adressage ANYCAST pour les destinations STOMP, qui permet la diffusion de messages point à point. En mode ANYCAST, les messages sont diffusés à un seul client à partir d’un pool de clients disponibles, ce qui permet l’équilibrage de charge et la distribution du travail sur plusieurs instances de clients.

  • Une file d’attente est une mémoire tampon qui stocke les messages. Avec l’adressage ANYCAST, la file d’attente s’assure que les messages ne sont envoyés qu’à un seul client, même si plusieurs clients sont connectés à la même destination.

  • Un consommateur reçoit des messages des destinations. Il sait à quelle destination s’abonner et peut traiter les messages avec différents modes d’accusé de réception (automatique, client ou client-individu).

Adaptateur MySQL (secours)

Un système de file d'attente de messages de base peut également être configuré sans utiliser de courtiers de messages externes. Dans ce système, un adaptateur MySQL stocke les messages dans la base de données. Trois tables de base de données (queue, queue_message et queue_message_status) gèrent la charge de travail de la file d'attente des messages. Les tâches cron permettent aux consommateurs de recevoir des messages. Cette solution n'est pas très évolutive. Les courtiers de messages externes tels que RabbitMQ ou Apache ActiveMQ Artemis doivent être utilisés chaque fois que cela est possible pour les environnements de production.

Informations connexes

Pour les instructions d’installation et de configuration :

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c