Présentation
Tout administrateur système expérimenté sait qu'il est parfois très utile et même nécessaire de remettre des tâches à plus tard, surtout si la tâche prend du temps et consomme beaucoup de ressources. Pour ce faire, vous avez besoin d'un courtier de messages - un programme qui reçoit des messages (tâches) de divers expéditeurs (applications Web), forme une file d'attente à partir d'eux, puis les distribue entre les processus de travail.
Cet article se concentrera sur le projet RabbitMQ - un ensemble d'applications ouvertes pour implémenter les fonctions d'un courtier de messages qui implémente le protocole AMQP (Advanced Message Queuing Protocol).
Messages, courtiers de messages et séquence
La messagerie est un moyen d'échanger certaines données entre processus, applications, serveurs virtuels et physiques. Ces messages, qui exécutent certaines fonctions de calcul, peuvent contenir presque n'importe quoi, du texte brut à de gros blocs de données binaires. Pour l'exécution correcte de ce processus, un programme tiers est nécessaire - c'est le courtier de messages.
Un courtier de messages est généralement un groupe d'applications, dont chaque composant individuel est conçu pour traiter une certaine étape de la messagerie :recevoir un message, le définir dans la file d'attente et transférer le message au processus de travail responsable de son exécution. Souvent, au lieu de solutions à part entière, des programmes sont utilisés qui n'étaient pas initialement destinés à ce travail (bases de données, démon cron, etc.); ils créent simplement une file d'attente de messages (qui représente techniquement des tampons infinis), puis les transmettent pour un traitement automatique ou pour une interrogation.
Pourquoi avez-vous besoin d'un courtier de messages ?
Les courtiers de messages jouent le rôle d'intermédiaire entre différents services (applications Web). Ils réduisent considérablement la charge et raccourcissent le délai de livraison des messages, puisque les tâches qui prennent du temps à être traitées sont réparties entre des workflows conçus exclusivement pour effectuer ces tâches. Ils fournissent un canal fiable pour transmettre des messages d'une application à une autre.
Quand avez-vous besoin d'un courtier de messages ?
En général, les fonctionnalités de base des courtiers de messages couvrent de nombreux domaines, y compris, mais sans s'y limiter :
- Réduire le temps de réponse des serveurs Web aux requêtes (car ils n'ont pas à effectuer de tâches gourmandes en ressources).
- Diffusion du message à plusieurs destinataires (par exemple, pour traitement).
- Les utilisateurs hors connexion peuvent récupérer toutes les données ultérieurement.
- Mode de fonctionnement entièrement asynchrone avec les systèmes de serveur.
- Classement et hiérarchisation des tâches ;
- Équilibrage de charge entre les processus de travail.
- Améliorer la fiabilité et la disponibilité de l'application.
Et bien plus encore.
Un bref examen de RabbitMQ
RabbitMQ (sorti en 2007) est l'un des courtiers de messages open source les plus populaires sous licence Mozilla Public License v1.1 en tant qu'implémentation du protocole Advanced Message Queuing. Conçu en Erlang, RabbitMQ est assez facile à utiliser et à installer.
Comment fonctionne RabbitMQ ?
RabbitMQ fournit une interface qui relie les expéditeurs (éditeurs) aux destinataires (consommateurs) à l'aide d'un courtier qui distribue les données dans les listes appropriées - Message Queues.
APPLICATION EXCHANGE TASK LIST WORKER [DATA] -------> [DATA] ------> [D]+[D][D][D] ---> [DATA] Publisher EXCHANGE Queue Consumer
Avantages de RabbitMQ
Contrairement à d'autres solutions, RabbitMQ est une pile d'applications à part entière, et non une simple base pour l'application de votre choix. Il fournit tous les outils nécessaires dans le complexe.
Un bref aperçu de l'AMQP
AMQP (Advanced Message Queuing Protocol) est une norme ouverte largement répandue pour la distribution et la transmission de messages. En tant que protocole et norme, il établit un cadre commun pour l'interaction de diverses applications et courtiers de messages et élimine les problèmes causés par la conception de programmes individuels.
Installation de RabbitMQ
Les packages RabbitMQ sont fournis par CentOS / RHEL et Ubuntu / Debian. Mais, en règle générale, ces packages sont obsolètes. Par conséquent, il est recommandé de télécharger et d'installer RabbitMQ manuellement.
Remarque :Il est recommandé d'effectuer toutes les actions manuelles sur un nouveau serveur afin de ne pas perturber le fonctionnement des applications précédemment lancées et de ne pas provoquer d'échec de configuration.Installer RabbitMQ dans CentOS/RHEL
Avant de commencer l'installation de RabbitMQ, vous devez installer les dépendances du programme, dont l'une est Erlang. Cependant, tout d'abord, il est nécessaire de mettre à jour le système et les applications standard ; pour ce faire, lancez :
# yum -y update
Pour l'installation d'Erlang, vous pouvez utiliser :
# Add and enable relevant application repositories: # Note: We are also enabling third party remi package repositories. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm # Finally, download and install Erlang: yum install -y erlang
vous pouvez maintenant installer RabbitMQ :
# Download the latest RabbitMQ package using wget: wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.2/rabbitmq-server-3.2.2-1.noarch.rpm # Add the necessary keys for verification: rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc # Install the .RPM package using YUM: yum install rabbitmq-server-3.2.2-1.noarch.rpm
Installer RabbitMQ sur Ubuntu
Le processus d'installation de RabbitMQ dans Ubuntu/Debian est presque le même sur CentOS. Tout d'abord, vous devez mettre à jour le logiciel :
# apt-get update # apt-get -y upgrade
Ajouter la clé rabbitmq :
# curl -fsSL https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | sudo apt-key add -
Faire la mise à jour du paquet :
# apt-get update
Vous pouvez maintenant installer rabbitmq RabbitMQ :
$ sudo apt-get install rabbitmq-server
Gestion de RabbitMQ
Comme mentionné précédemment, le courtier RabbitMQ est très facile à utiliser. Cette section fournit des instructions pour gérer et configurer RabbitMQ.
Activation de la console de gestion
La console de gestion RabbitMQ (RabbitMQ Management Console) est l'un des plug-ins disponibles qui vous permet de surveiller les processus du serveur RabbitMQ via une interface utilisateur graphique basée sur le Web.
À l'aide de cette console, vous pouvez :
- Gérer la messagerie, les files d'attente de messages, les connexions et les utilisateurs ;
- Suivez les files d'attente de messages, les connexions et les débits de messages
- Envoyer et recevoir des messages ;
- Suivez les processus Erlang et l'utilisation de la mémoire ;
Et bien plus encore.
Pour activer la gestion de RabbitMQ, exécutez la commande :
$ sudo rabbitmq-plugins enable rabbitmq_management
Vous pouvez maintenant ouvrir la console de gestion dans le navigateur en visitant your_ip:15672.
Default rabbitmq user – guest. Default rabbitmq password – guest
Gestion de RabbitMQ dans CentOS/RHEL
Pour activer le démarrage automatique de RabbitMQ, vous devez exécuter :
# chkconfig rabbitmq-server on
Pour démarrer, arrêter, redémarrer et vérifier l'état, utilisez les commandes ci-dessous :
# start: /sbin/service rabbitmq-server start # stop: /sbin/service rabbitmq-server stop # restart: /sbin/service rabbitmq-server restart # status: /sbin/service rabbitmq-server status
Gestion de RabbitMQ dans Ubuntu/Debian
Pour démarrer, arrêter, redémarrer et vérifier l'état de rabbitmq sur Ubuntu/Debian, utilisez les commandes ci-dessous :
# start: service rabbitmq-server start # stop: service rabbitmq-server stop # restart: service rabbitmq-server restart # status: service rabbitmq-server status
Votre serveur rabbitmq est maintenant prêt à être utilisé !
Configuration de RabbitMQ
RabbitMQ est livré avec des paramètres standard. En général, ils sont assez fiables et ne nécessitent aucune modification.