Fermer

mars 9, 2021

Intégration de RabbitMQ avec Magento 2.4


Auparavant, Magento utilisait des adaptateurs MySQL pour la messagerie et les tâches cron afin d'assurer la livraison des messages. Ce n’était ni fiable ni évolutif. Pour lutter contre cela, vous pouvez intégrer RabbitMQ, qui ajoute des capacités de messagerie asynchrone à Magento et est également évolutif et fiable.

Par exemple, RabbitMQ pourrait être utilisé là où Magento a besoin de communiquer avec un système ERP. RabbitMQ dissocie un processus d'intégration ERP du processus de traitement des commandes client. Le consommateur fonctionnant désormais en arrière-plan, nous avons un processus d'exécution des commandes plus rapide et une meilleure gestion des erreurs. Ceci améliore ainsi l'expérience globale de l'utilisateur final.

Qu'est-ce que RabbitMQ

RabbitMQ est le courtier de messages open-source, un intermédiaire pour la messagerie. Il donne aux applications une plate-forme commune pour envoyer et recevoir des messages, et un endroit sûr pour les messages à vivre jusqu'à leur réception.

RabbitMQ est l'intermédiaire pour la messagerie et prend en charge plusieurs protocoles, y compris le protocole AMQP (Advanced Message Queuing Protocol) pour le traitement des communications entre deux applications . C’est un middleware dans lequel les files d’attente sont définies et les applications (consommateurs) peuvent se connecter aux files d’attente pour extraire les messages. Une file d'attente peut être n'importe quel type d'informations, comme un processus ou une tâche qui devrait démarrer sur une autre application ou même un simple message texte.

Les avantages de RabbitMQ

Il y a plusieurs avantages à utiliser RabbitMQ, tels que: [19659008] Messagerie asynchrone

  • Clustering
  • Federation
  • Files d'attente hautement disponibles
  • Multi-protocole
  • Management UI
  • Plugin System
  • Il existe un certain nombre de tâches / activités exécutées dans un site Web de commerce architecture en tant que client passe une commande à partir du site Web, par exemple:

    • Génération de la commande
    • Paiement
    • Gestion des stocks
    • Activation des communications par e-mail et texte
    • Envoi / réception des données de commande vers SAP / CRM / Systèmes ERP
    • Envoi de données à l'analytique

    Lorsque toutes ces activités sont effectuées en temps réel, plus de temps est ajouté pour terminer le processus de commande, ce qui peut avoir un impact négatif sur une entreprise. RabbitMQ peut aider à transférer la plupart de ces tâches dans des files d'attente et à les traiter par la suite via une messagerie asynchrone, permettant ainsi aux serveurs Web de répondre rapidement.

    Architecture de base d'une file d'attente de messages

     Adobe - Content for Everyone
    Content for Everyone

    Les entreprises qui peuvent répondre rapidement et systématiquement aux demandes des consommateurs prospèrent à une époque de contenu infini. Découvrez comment créer des expériences fluides pour vos clients omnicanaux.

    Obtenir le guide

     Rabbitmq

    Les applications client, appelées producteurs, créent des messages et les livrent au courtier (RabbitMQ). Les applications, appelées consommateurs, se connectent à la file d'attente et s'abonnent aux messages à traiter.

    Installation et configuration

    Avant de pouvoir créer votre application de messagerie, vous devez configurer un serveur RabbitMQ pour gérer la réception et l'envoi des messages

    Le serveur RabbitMQ peut être configuré de plusieurs manières. Suivez cet aperçu des meilleures pratiques pour configurer le serveur RabbitMQ à l'aide d'images Docker ou de machines RHEL / CentOS sur la base.

    Méthode 1: Machines RHEL / CentOS

    • Installez les packages. Assurez-vous que les packages dépendants répertoriés ci-dessous sont également installés avec le package rabbitmq-server
    • Configuration personnalisée. Configurez RabbitMQ pour toute exigence personnalisée, le cas échéant. Par exemple, il est recommandé de chiffrer la communication pour des raisons de sécurité, en particulier dans un environnement de production. Pour ce faire, nous pouvons configurer un proxy et laisser RabbitMQ s'exécuter sur les configurations par défaut ou nous pouvons configurer RabbitMQ pour les connexions activées par TLS. Pour activer TLS dans RabbitMQ, nous devons indiquer au nœud, qui est le serveur autonome RabbitMQ, ou aux nœuds dans un environnement en cluster, d'utiliser les connexions chiffrées en activant les paramètres liés à TLS et en fournissant la paire de clé de certificat SSL et le certificat signé par l'autorité de certification. [19659009] Activez les plugins. Nous pouvons activer les plugins selon les exigences du projet. Nous devons généralement activer le plugin de gestion pour que le serveur RabbitMQ soit accessible via une interface utilisateur de gestion.
    • Supprimez l'utilisateur par défaut. L'utilisateur et le mot de passe par défaut de RabbitMQ sont connus du public. Il est donc recommandé de supprimer l'utilisateur par défaut et de créer un nom d'utilisateur et un mot de passe personnalisés.
    • Effectuez des tests. Démarrez le rabbitmq-server et effectuez des tests pour vérifier si le serveur fonctionne comme prévu, comme un test de prise de contact SSL ou un test de connectivité de port, etc.
    • Publish and Consume Messages. Une fois que le test aboutit à la sortie souhaitée, nous pouvons procéder à la publication et à la consommation des files d'attente (messages).

    Méthode 2: Image Docker

    C'est la manière la plus simple d'héberger un serveur RabbitMQ car l'image docker est préconstruite avec toutes les exigences pour que le service fonctionne correctement, il ne nous reste plus que les plugins et la configuration personnalisée.

    • Construire Docker Image & Run Container. Créez une image Docker RabbitMQ à l'aide de DockerFile et du conteneur Run à l'aide d'une image précédemment créée via le fichier docker-compose.yml. Tirez sur l'image alpine pour que la taille de l'image soit la moins possible.
    • Configuration personnalisée. Configurez RabbitMQ pour toute exigence personnalisée, le cas échéant. Comme mentionné ci-dessus, la même configuration personnalisée peut être appliquée dans le fichier de configuration rabbitmq par défaut et ajoutée à l'image du docker ou peut être incluse en tant que fichier de variable d'environnement dans le fichier docker-compose.yml.
    • Activer les plugins . Comme mentionné ci-dessus, des plugins similaires peuvent être activés lors de la création d'image ou plus tard une fois que le conteneur est opérationnel.
    • Supprimez l'utilisateur par défaut. Une fois le conteneur opérationnel, supprimez l'utilisateur par défaut et un utilisateur personnalisé doit être créé. Cela peut être fait à partir de l'interface de ligne de commande ou même de l'interface utilisateur de gestion, ainsi qu'en ajoutant des informations d'identification utilisateur personnalisées dans le fichier de configuration par défaut de RabbitMQ.
    • Effectuez des tests. Effectuez des tests et vérifiez si le serveur fonctionne comme prévu, comme un test de prise de contact SSL ou un test de connectivité de port, etc.
    • Publier et consommer des messages. Une fois que le test donne la sortie souhaitée, nous pouvons procéder et tester la publication et la consommation des files d'attente (messages).

    Intégration avec Magento 2.4

    Une fois que le serveur RabbitMQ est prêt à accepter les connexions client, les développeurs doivent configurer Magento pour pouvoir communiquer avec RabbitMQ.

    Fournissez les variables d'environnement associées à RabbitMQ ci-dessous via la ligne de commande ou ajoutez-les au fichier env.php:

    • Host
    • Port
    • User
    • Mot de passe
    • Virtualhost
    • Cafile
    • Certfile
    • Keyfile

    Nous pouvons maintenant configurer les files d'attente de messages dans RabbitMQ. Selon la documentation officielle de Magento, la configuration de la topologie de la file d'attente de messages implique la création et la modification des fichiers de configuration suivants.

    • communication.xml – définit les aspects du système de file d'attente de messages que tous les types de communication ont en commun
    • queue_consumer.xml – définit le relation entre une file d'attente existante et son consommateur
    • queue_topology.xml – définit les règles de routage des messages et déclare les files d'attente et les échanges
    • queue_publisher.xml – définit l'échange où un sujet est publié

    En fonction des besoins du projet, les développeurs peut seulement avoir besoin de créer et de configurer communication.xml et un ou deux de ces fichiers.

    • Si nous voulons publier uniquement dans une file d'attente existante créée par un système tiers, nous n'aurons besoin que du fichier queue_publisher.xml. [19659009] Si nous voulons consommer uniquement à partir d'une file d'attente existante, nous n'aurons besoin que du fichier de configuration queue_consumer.xml.
    • Dans les cas où nous voulons configurer la file d'attente locale et publier Pour que les systèmes tiers l'utilisent, nous aurons besoin des fichiers queue_publisher.xml et queue_topology.xml.
    • Lorsque nous voulons configurer la file d'attente locale et consommer les messages publiés par un système tiers, nous aurons besoin de queue_topology. xml et queue_consumer.xml.

    Effectuez ces étapes une fois la configuration terminée:

    • Exécutez « php bin / magento setup: upgrade » pour installer le module personnalisé dans Magento
    • Exécutez « php bin / magento queue: consumer: list »et vérifiez que le consommateur défini dans queue_consumer.xml est répertorié dans la sortie
    • Run« php bin / magento queue: consumer: start ConsumerName ”Pour exécuter le consommateur

    Laissez RabbitMQ être votre intermédiaire

    Ces processus décrits ci-dessus vous aideront à intégrer facilement RabbitMQ à Magento 2.4 pour publier et consommer des files d'attente de messages. Pour plus d'informations sur ces intégrations techniques, contactez nos experts dès aujourd'hui . Comme toujours, bonne messagerie.

    À propos de l'auteur

    Je suis administrateur système, fournissant actuellement un support serveur à plusieurs projets et responsable de l'administration quotidienne standard des serveurs Linux. Cela inclurait, mais sans s'y limiter, le déploiement d'une pile LAMP / LNMP standard, le déploiement automatique, Docker et d'autres services dans un système d'exploitation Linux et un cadre de commerce électronique Magento. (f, b, e, v, n, t, s) {if (f.fbq) return; n = f.fbq = function () {n.callMethod?
    n.callMethod.apply (n, arguments): n.queue.push (arguments)}; if (! f._fbq) f._fbq = n;
    n.push = n; n.loaded =! 0; n.version = '2.0'; n.queue = []; t = b.createElement (e); t.async =! 0;
    t.src = v; s = b.getElementsByTagName (e) [0]; s.parentNode.insertBefore (t, s)} (fenêtre,
    document, 'script', 'https: //connect.facebook.net/en_US/fbevents.js');

    fbq («init», «911436665572720»);
    fbq ('track', "PageView");




    Source link