article Annuaire
- 1 principe RabbitMQ
- 1.1 schémas de RabbitMQ
- 1.2 Principe explique
- 1.2.1 Message Message
- 1.2.2 Editeur producteur de nouvelles
- 1.2.3 consommateurs de nouvelles consommateurs
- 1.2.4 Commutateur d'échange
- 1.2.5 Reliure Reliure
- 1.2.6 file de messages de file d'attente
- 1.2.7 clés de routage de routage-clés
- 1.2.8 lien de connexion
- 1.2.9 Canal Nobumichi
- 1.2.10 Web Hosting hôte virtuel
- 1.2.11 entité serveur Borker
- 01/02/12 échangeur et la relation entre la file d'attente
- 1.2.13 RabbitMQ canal Pourquoi, pourquoi ne pas la communication directe TCP
- Le mécanisme message d'acquittement ACK 1,3 RabbitMQ
1 principe RabbitMQ
1.1 schémas de RabbitMQ
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
RabbitMQ
La 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 à MQ
serveur, le message aura une clé de routage, même si elle est vide, RabbitMQ
aussi 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 rabbit
serveurs et services pour établir le TCP
lien.
1.2.9 Canal Nobumichi
Channel
Chinois appelé le canal, est à l'TCP
intérieur des liens virtuels. Par exemple: un câble correspondant àTCP
la chaîne est un faisceau de fibres optiques séparées, unTCP
créer de multiples canaux ne pose aucun problème sur la connexion.TCP
Une fois ouvert, il va créer unAMQP
canal.- 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 vhost
est essentiellement une mini
version du RabbitMQ
serveur, avec sa propre file d' attente, les commutateurs, la liaison et le mécanisme d'autorisation.
vhost
Est AMQP
basé sur le concept doit être spécifié au moment de la liaison, par RabbitMQ
défaut vhost
est/
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
TCP
Création et les frais généraux de destruction est particulièrement grande. La nécessité de créer3
poignée de main, la destruction besoin4
empire.- Si vous ne croyez pas, c'est - ce que l'application sera de
TCP
lienRabbit
, lorsque des centaines de milliers de messages par seconde liaison pic provoquera un énorme gaspillage de ressources, et le système d'exploitation par secondeTCP
le nombre de liens est limité, provoquera les goulots d'étranglement. - Principe est un canal de fil d'un canal, des canaux multiples multi-threads avec l'utilisation d'un
TCP
lien. UnTCP
lien 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, RabbitMQ
soutien à la reconnaissance des messages -ACK
1.3.2 un message ACK mécanisme de confirmation
ACK
Mécanisme de consommateurs RabbitMQ
après avoir reçu le message et le traitement est terminé, retour à la RabbitMQ
,RabbitMQ收到反馈后才将此消息从队列中删除
- 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 ` - Si dans un cas de cluster,
RabbitMQ
sera 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 消息永远不会从RabbitMQ中删除
: Seulement lorsque les consommateurs envoient le bonACK
retour d' information,RabbitMQ
après avoir accusé réception du message sera deRabbitMQ
supprimer serveur de données- Message
ACK
mé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 consumer
vous quittez, Message
il aurait été redistribué.
Ensuite , RabbitMQ
il sera 占用越来越多的内存
, en raison du RabbitMQ
temps d'exécution, donc 内存泄漏
être fatale
1.3.4 semble destinataire anormal
Parce que le destinataire consumer
anormal, 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