principe RabbitMQ

1 principe RabbitMQ

1.1 schémas de RabbitMQ

Insérer ici l'image Description
Insérer ici l'image Description

1.2 Principe explique

1.2.1 Message Message

Le message est anonyme, il est un en- tête du message corps du message. Le corps du message est opaque, et l' en- tête du message par un certain nombre d'attributs facultatifs, ces attributs comprennent: routing-key(clés de routage), priority(priorité par rapport aux autres messages), delivery-mode(magasin persistant peut noter que un message) ou similaire.

1.2.2 Editeur producteur de nouvelles

Nouvelles producteur, l'application cliente est une version de l'information au commutateur.

1.2.3 consommateurs de nouvelles consommateurs

Il représente une application cliente pour obtenir le message de la file d'attente de messages.

1.2.4 Commutateur d'échange

Pour recevoir un message envoyé par le producteur de la file d' attente et le serveur pour acheminer les messages.
Trois types courants de commutateurs:

  • direct(Publier et abonnez-vous correspondance exacte)
  • fanout(Broadcast)
  • topic(Thèmes, correspondent des règles)

1.2.5 Reliure Reliure

Utilisé 消息队列et l' 交换器association entre les deux. Une liaison est basé sur 路由键l'échange de messages et les
règles de routage reliant la file d' attente, il peut être 交换器compris en tant que une 绑定configuration 路由表.

1.2.6 file de messages de file d'attente

Pour enregistrer les messages envoyés avant au consommateur. Il est un message 容器, est le message 终点. Un message peut être mis dans une ou plusieurs files d' attente. Le message a été à l'intérieur de la file d' attente, en attendant que les consommateurs lien vers cette file d' attente va le supprimer.

1.2.7 clés de routage de routage-clés

RabbitMQLa décision de transmettre le message auquel la file d' attente de règle. Lié à la file d' attente par l'intermédiaire des touches de commutation d' acheminement.
Message à MQserveur, le message aura une clé de routage, même si elle est vide, RabbitMQaussi un routage et les clés de liaison à utiliser pour la correspondance.
Si elles correspondent, le message sera livré à la file d' attente.
Dans le cas contraire, le message pénétrer dans un trou noir.

1.2.8 lien de connexion

Il fait référence aux rabbitserveurs et services pour établir le TCPlien.

1.2.9 Canal Nobumichi

  • ChannelChinois appelé le canal, est à l' TCPintérieur des liens virtuels. Par exemple: un câble correspondant à TCPla chaîne est un faisceau de fibres optiques séparées, un TCPcréer de multiples canaux ne pose aucun problème sur la connexion.
  • TCPUne fois ouvert, il va créer un AMQPcanal.
  • Que ce soit 发布消息, 接收消息, 订阅队列ces actions sont accomplies par un canal.

1.2.10 Web Hosting hôte virtuel

Il représente un certain nombre 交换器, 消息队列et 相关对象.
L' hébergement Web partage le même 身份认证et le 加密环境domaine du serveur autonome. Chaque vhostest essentiellement une miniversion du RabbitMQserveur, avec sa propre file d' attente, les commutateurs, la liaison et le mécanisme d'autorisation.
vhostEst AMQPbasé sur le concept doit être spécifié au moment de la liaison, par RabbitMQdéfaut vhostest/

1.2.11 entité serveur Borker

Il représente une file d' attente de messages 服务器实体.

01/02/12 échangeur et la relation entre la file d'attente

交换器Par 路由键et 队列liés ensemble, si le message a une file d' attente avec les touches de routage et les commutateurs de la
correspondance des touches de routage, le message sera acheminé vers la file d' attente de liaison.
C'est, la file d' attente des messages de processus, le message passera par le premier commutateur, suivi par le commutateur de routage
clé de répartition pour correspondre à une file d' attente de message particulier.
règles de routage peuvent être comprises comme le match clé.

1.2.13 RabbitMQ canal Pourquoi, pourquoi ne pas la communication directe TCP

  1. TCPCréation et les frais généraux de destruction est particulièrement grande. La nécessité de créer 3poignée de main, la destruction besoin 4empire.
  2. Si vous ne croyez pas, c'est - ce que l'application sera de TCPlien Rabbit, lorsque des centaines de milliers de messages par seconde liaison pic provoquera un énorme gaspillage de ressources, et le système d'exploitation par seconde TCPle nombre de liens est limité, provoquera les goulots d'étranglement.
  3. Principe est un canal de fil d'un canal, des canaux multiples multi-threads avec l'utilisation d'un TCPlien. Un TCPlien peut accueillir canal illimité, voire des milliers de requêtes par seconde ne devienne pas un goulot d'étranglement.

Le mécanisme message d'acquittement ACK 1,3 RabbitMQ

1.3.1 accusé de réception apprécié message ACK

Si le serveur de consommateurs anormaux est survenue lors du traitement du message lors du traitement du message, il peut être ce message est en cours de traitement il n'y aura pas la consommation de nouvelles complète, 数据就会丢失afin d'assurer que les données ne sont pas perdues, RabbitMQsoutien à la reconnaissance des messages -ACK

1.3.2 un message ACK mécanisme de confirmation

ACKMécanisme de consommateurs RabbitMQaprès avoir reçu le message et le traitement est terminé, retour à la RabbitMQ,RabbitMQ收到反馈后才将此消息从队列中删除

  1. S'il y a eu une instabilité du réseau des consommateurs, phénomène anormal dans le serveur du traitement du message, puis 不会有ACK反馈,RabbitMQ 会认为这个消息没有正常消费,envoie un retour de message dans la file d' attente `
  2. Si dans un cas de cluster, RabbitMQsera les nouvelles immédiatement poussé aux autres consommateurs en ligne. Ce mécanisme garantit que la défaillance du serveur consommateur quand je ne perds pas de messages et tâches
  3. 消息永远不会从RabbitMQ中删除: Seulement lorsque les consommateurs envoient le bon ACKretour d' information, RabbitMQaprès avoir accusé réception du message sera de RabbitMQsupprimer serveur de données
  4. Message ACKmécanisme de validation est activé par défaut

Note mécanisme ACK 1.3.3

Si vous oubliez ACK, les conséquences seront graves. Lorsque consumervous quittez, Messageil aurait été redistribué.
Ensuite , RabbitMQil sera 占用越来越多的内存, en raison du RabbitMQtemps d'exécution, donc 内存泄漏être fatale

1.3.4 semble destinataire anormal

Parce que le destinataire consumeranormal, le message sera placé dans l' intérieur de la file d' attente, ce qui dans ce message n'est pas supprimé et répéter ce message a été envoyé, afin d'éviter des fluctuations anormales dans le réseau, et a dû utiliser le message d' origine, il doit ouvrir le mécanisme de nouvelle tentative au lieu de cela, utilisez la configuration suivante.

#开启重试
spring.rabbitmq.listener.simple.retry.enabled=true
#重试次数, 默认为 3 次
spring.rabbitmq.listener.simple.retry.max-attempts=3
Publié 334 articles originaux · Praise gagné 186 · vues 310 000 +

Je suppose que tu aimes

Origine blog.csdn.net/u012060033/article/details/104228508
conseillé
Classement