Installation et utilisation de RabbitMQ (1)

1. RabbitMQ

1.1 Services de recherche et de marchandise

Supposons que nous ayons terminé le développement des détails du produit et du système de recherche . Pensons-y, y a-t-il un problème?

  • Les données originales du produit sont stockées dans la base de données et tous les ajouts, suppressions, modifications et vérifications sont effectués dans la base de données.
  • La source des données du service de recherche est la base de données d'index. Si les produits de la base de données changent, les données de la base de données d'index peuvent-elles être mises à jour à temps.
    Si nous modifions le prix du produit en arrière-plan, la page de recherche est toujours l'ancien prix, ce qui est évidemment faux. Comment le résoudre?
    Il existe deux solutions:
  • Solution 1: chaque fois que l'arrière-plan ajoute, supprime ou modifie le produit, les données de la base de données d'index doivent être modifiées en même temps
    Insérez la description de l'image ici
  • Solution 2: le service de recherche fournit une interface d'opération externe, et l'arrière-plan appelle l'interface après l'ajout, la suppression et la modification du produit. Les
    Insérez la description de l'image ici
    deux méthodes ci-dessus posent le même problème sérieux: le couplage de code . Les services de recherche et de page produit doivent être intégrés dans le service d'arrière-plan, qui viole les microservices.Le principe d'indépendance. Donc, nous allons résoudre ce problème d'une autre manière: file d'attente de messages
    Insérez la description de l'image ici

1.2 File d'attente de messages (MQ)

1.2.1 Qu'est-ce qu'une file d'attente de messages

Insérez la description de l'image ici
La file d'attente des messages est typique: modèle producteur, consommateur. Les producteurs continuent de produire des messages dans la file d'attente de messages et les consommateurs continuent à obtenir des messages de la file d'attente. Parce que la production et la consommation des messages sont asynchrones , et qu'ils ne se soucient que de l'envoi et de la réception des messages, il n'y a pas d'intrusion de logique métier, qui réalise le découplage des producteurs et des consommateurs.
Combiné avec les problèmes mentionnés ci-dessus:

  • Après avoir ajouté, supprimé et modifié les produits, vous n'avez pas besoin d'utiliser la base de données d'index, envoyez simplement un message et ne vous souciez pas de qui reçoit le message.
  • Le service de recherche reçoit le message et traite la bibliothèque d'index.
    S'il existe d'autres systèmes qui reposent également sur les données des services de base à l'avenir, ils peuvent également écouter le message, et le service de marchandise ne nécessite aucune modification de code.

1.2.2 AMQP et JMS

MQ est un modèle de communication de message, pas une implémentation spécifique. Il existe deux méthodes courantes pour implémenter MQ: AMQP et JMS .
Insérez la description de l'image ici
Insérez la description de l'image ici
La différence et le lien entre les deux:

  • JMS définit une interface unifiée pour unifier l'opération de message , AMQP unifie le format de l'interaction des données via le protocole spécifié ;
  • JMS définit que vous devez utiliser le langage Java ; le protocole AMQP uniquement, pas l'implémentation des dispositions, et est donc un langage croisé de
  • JMS fournit deux modèles de message ** (file d'attente, sujet) **; et AMQP a un modèle de message plus riche

1.2.3 Produits MQ courants

  • ActiveMQ: basé sur JMS
  • RabbitMQ: Basé sur le protocole AMQP, développement du langage erlang, bonne stabilité
  • RocketMQ: Basé sur JMS, les produits Alibaba, actuellement remis à la Fondation Apache
  • Kafka: système de messagerie distribuée, haut débit, traitement des journaux, écrit en Scala et Java

1.2.4 RabbitMQ

  • RabbitMQ est un système de gestion de messages basé sur AMQP
  • Site officiel: http://www.rabbitmq.com/
  • Tutoriel officiel: http://www.rabbitmq.com/getstarted.html
  • RabbitMQ est un système de messagerie d'entreprise open source basé sur AMQP.
  • Prise en charge des systèmes d'exploitation courants, Linux, Windows, MacOX, etc.
  • Prise en charge de plusieurs langages de développement, Java, Python, Ruby, .Net, PHP, C / C ++, node.js, etc.

1.2.5 Trois fonctions principales de MQ

  • asynchrone
  • Découplage
  • Coupure de crête

1.2.6 Caractéristiques de RabbitMQ

  • RabbitMQ est une implémentation open source d'AMQP développée par le langage Erlang.
  • Fiabilité
    RabbitMQ utilise certains mécanismes pour garantir la fiabilité, tels que la persistance, la confirmation de transmission et la confirmation de libération.
  • Routage flexible (routage flexible)
    avant que le message n'entre dans la file d'attente, le message est acheminé via Exchange. Pour les fonctions de routage typiques, RabbitMQ a fourni des implémentations Exchange intégrées. Pour des fonctions de routage plus complexes, vous pouvez lier plusieurs échanges ensemble et également implémenter votre propre échange via le mécanisme de plug-in.
  • Clustering de messages (clustering)
    Plusieurs serveurs RabbitMQ peuvent former un cluster pour former un Broker logique.
  • Files d'attente hautement disponibles (files d'attente hautement disponibles) Les
    files d'attente peuvent être mises en miroir sur les machines du cluster, afin que les files d'attente soient toujours disponibles lorsque certains nœuds rencontrent des problèmes.

  • RabbitMQ multi-protocole prend en charge plusieurs protocoles de file d'attente de messages, tels que STOMP, MQTT, etc.
  • De nombreux clients
    RabbitMQ prend en charge presque tous les langages courants, tels que Java, .NET, Ruby, etc.
  • Interface utilisateur de gestion (interface utilisateur de gestion)
    RabbitMQ fournit une interface utilisateur facile à utiliser qui permet aux utilisateurs de surveiller et de gérer de nombreux aspects du courtier de messages.
  • Mécanisme de traçage (Tracing)
    Si le message est anormal, RabbitMQ fournit un mécanisme de traçage de message afin que l'utilisateur puisse découvrir ce qui s'est passé.
  • Plugin System (Plugin System)
    RabbitMQ fournit de nombreux plug-ins à étendre de plusieurs manières, et vous pouvez également écrire vos propres plug-ins.

1.2.7 Concepts de base de RabbitMQ

Ce qui précède n'est que la description la plus simple et abstraite, spécifique à RabbitMQ, il y a des concepts plus détaillés qui doivent être expliqués. Comme mentionné ci-dessus, RabbitMQ est une implémentation open source du protocole AMQP, donc son interne est en fait un concept de base dans AMQP:
Insérez la description de l'image ici

  • Message
    message, le message est anonyme, il est composé d'un en-tête et d'un corps de message. Le corps du message est opaque et l'en-tête du message se compose d'une série d'attributs facultatifs, y compris la clé de routage (clé de routage), la priorité (priorité par rapport aux autres messages), le mode de remise (soulignant que le message peut nécessiter un stockage persistant) etc.

  • Le producteur de messages Publisher est également une application cliente qui publie des messages dans l'échange.
  • Exchange Exchange
    , utilisé pour recevoir les messages envoyés par les producteurs et acheminer ces messages vers la file d'attente du serveur.
  • Liaison de
    liaison, utilisée pour l'association entre la file d'attente de messages et l'échange. Une liaison est une règle de routage qui connecte le commutateur et la file d'attente de messages en fonction de la clé de routage, de sorte que le commutateur peut être compris comme une table de routage composée de liaisons.
  • File d'
    attente des messages de la file d'attente, utilisée pour enregistrer le message jusqu'à ce qu'il soit envoyé au consommateur. C'est le conteneur du message et la fin du message. Un message peut être placé dans une ou plusieurs files d'attente. Le message a été dans la file d'attente, attendant que le consommateur se connecte à cette file d'attente pour le supprimer.
  • Connexion
    connexion réseau, telle qu'une connexion TCP.
    Canal
  • Channel, un canal de flux de données bidirectionnel indépendant dans une connexion multiplexée. Un canal est une connexion virtuelle établie dans une connexion TCP réelle. Les commandes AMQP sont envoyées via le canal. Qu'il s'agisse de publier des messages, de s'abonner à des files d'attente ou de recevoir des messages, toutes ces actions sont effectuées via le canal. Comme il est très coûteux pour le système d'exploitation d'établir et de détruire TCP, le concept de canal est introduit pour réutiliser une connexion TCP.

  • Le consommateur du message Consumer représente une application cliente qui obtient le message de la file d'attente de messages.
  • Virtual Host Virtual Host
    , représente un lot d'échanges, de files d'attente de messages et d'objets associés. Un hôte virtuel est un domaine de serveur indépendant qui partage le même environnement d'authentification et de chiffrement. Chaque hôte virtuel est essentiellement une mini version du serveur RabbitMQ avec sa propre file d'attente, commutateur, liaison et mécanisme d'autorisation. vhost est le fondement du concept AMQP et doit être spécifié lors de la connexion. Le vhost par défaut de RabbitMQ est /.
  • Broker
    représente l'entité du serveur de file d'attente de messages.

1.3 Téléchargement et installation

1.3.1 Télécharger

1. Téléchargez le package rpm Erlang is
RabbitMQ est écrit en langage Erlang, donc l'environnement Erang doit avoir, Remarque: l'environnement Erlang doit correspondre à la version RabbitMQ : Lien: https://www.rabbitmq.com/which-erlang.html .
Insérez la description de l'image ici
Lien: https://dl.bintray.com/rabbitmq-erlang/rpm/erlang/21/el/7/x86_64/erlang-21.3.8.16-1.el7.x86_64.rpm .
2. Téléchargez l'installation de rabbitmq du package rpm de
socat Dépend de socat, vous devez donc télécharger socat.
adresse de téléchargement socat:
lien: http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
3. Télécharger le package
RPM RabbitMQ Adresse de téléchargement RabbitMQ:
lien: https : //www.rabbitmq.com/download.html
téléchargement: rabbitmq-server-3.8.1-1.el7.noarch.rpm
Insérez la description de l'image ici

1.3.2 Installation (version Centos7)

1. Installez Erlang, Socat, RabbitMQ
Insérez la description de l'image ici
①rpm -ivh erlang-21.3.8.9-1.el7.x86_64.rpm
②rpm -ivh socat-1.7.3.2-1.el6.lux.x86_64.rpm
③rpm -ivh rabbitmq-server-3.8 .1-1.el7.noarch.rpm
est exécuté dans l'ordre, l'ordre n'est pas possible
2. Activez le plug-in de gestion
rabbitmq-plugins enable rabbitmq_management
Insérez la description de l'image ici
3. Démarrez RabbitMQ
systemctl start rabbitmq-server.service
systemctl status rabbitmq-server. service
systemctl restart rabbitmq-server.service
systemctl stop rabbitmq-server.service
Insérez la description de l'image ici
4. Afficher le processus
ps -ef | grep rabbitmq
Insérez la description de l'image ici

1.3.3 Test

  • Désactivez le pare-feu: systemctl stop firewalld.service
  • Entrez l'adresse dans le navigateur Web: http: // ip machine virtuelle: 15672 /
  • Entrez le mot de passe du compte par défaut: invité: invité, les utilisateurs invités ne sont pas autorisés à se connecter à distance par défaut .
    Insérez la description de l'image ici
  • Ajouter un compte personnalisé
  • Ajouter le mot de passe du compte administrateur: rabbitmqctl add_user admin admin
    Insérez la description de l'image ici
  • Attribuer le rôle de compte: administrateur administrateur rabbitmqctl set_user_tags
    Insérez la description de l'image ici
  • Changer le mot de passe: rabbitmqctl change_password admin 123456
    Insérez la description de l'image ici
  • Afficher la liste des utilisateurs: rabbitmqctl list_users
  • Insérez la description de l'image ici
  • Connectez-vous avec un nouveau compte, interface de réussite
  • Insérez la description de l'image ici
  • Introduction aux onglets de l'interface de gestion
  • vue d'ensemble: vue d'ensemble
  • connexions: les producteurs et les consommateurs doivent établir une connexion avec RabbitMQ avant de pouvoir terminer la production et la consommation des messages. Vous pouvez afficher la connexion ici
  • canaux: Canaux Une fois la connexion établie, un canal est formé et la livraison des messages dépend du canal.
  • Echanges: Echanges, utilisés pour implémenter le routage des messages
  • Files d'attente: file d'attente, c'est-à-dire file d'attente de messages. Les messages sont stockés dans la file d'attente, en attente de consommation, puis supprimés de la file d'attente après consommation.
  • Port:
  • 5672: port de connexion client du langage de programmation de RabbitMq
  • 15672: port d'interface de gestion rabbitMq
  • 25672: port du cluster rabbitMq

1.3.4 Désinstaller

  • rpm -qa | grep rabbitmq
  • rpm -e rabbitmq-server

1.4 Interface de gestion

1.4.1 Ajouter un utilisateur

Si vous n'utilisez pas d'invité, nous pouvons également créer un utilisateur par nous-mêmes:
Insérez la description de l'image ici
1. Le super-administrateur (administrateur)
peut se connecter à la console de gestion, afficher toutes les informations et opérer sur les utilisateurs et les politiques.
2. La personne
chargée de la surveillance peut se connecter à la console de gestion et en même temps voir les informations relatives au nœud rabbitmq (nombre de processus, utilisation de la mémoire, utilisation du disque, etc.)
3. Le décideur
peut se connecter au console de gestion, et en même temps gérer la politique. Mais vous ne pouvez pas afficher les informations relatives au nœud (la partie marquée par la case rouge dans la figure ci-dessus).
4. Les gestionnaires ordinaires (gestion)
peuvent uniquement se connecter à la console de gestion, ne peuvent pas voir les informations de nœud et ne peuvent pas gérer les politiques.
5. Autres
Impossible de se connecter à la console de gestion, généralement des producteurs et des consommateurs ordinaires.

1.4.2 Créer des hôtes virtuels

Hôte virtuel: similaire à la base de données dans mysql. Ils commencent tous par "/"
Insérez la description de l'image ici

1.4.3 Définir les autorisations

Insérez la description de l'image ici
Insérez la description de l'image ici
Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44726976/article/details/108702028
conseillé
Classement