Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 26359|Répondre: 2

Une analyse approfondie du mécanisme de réponse aux messages de RabbitMQ

[Copié le lien]
Publié sur 30/03/2018 10:42:59 | | | |


Lorsque le consommateur reçoit le message et que la tâche de traitement est terminée, il envoie un appel avec cet identifiant de message pour informer le serveur que le message a été reçu et que le traitement est terminé. RabbitMQ attend que la liaison du consommateur traitant un message soit perdue avant de déterminer que le message n’a pas été traité correctement, donc RabbitMQ retransmet le message.
L’accusé de réception des messages est désactivé par défaut. Il existe un paramètre noAck lors de l’initialisation de Consommateur,Si elle est réglée sur true, le consommateur répondra à un ack dès qu’il reçoit le message


De manière générale, le scénario couramment utilisé noack est habituellement validé, mais pour les projets à haut risque, comme le paiement. Pour chaque message, nous devons en assurer l’intégrité et la justesse. Après avoir reçu le message, vous devez confirmer que la logique métier correcte est exécutée, puis renvoyer activement un appel au serveur. Vous pouvez consulter les messages dans la file via la commande rabbitmqctl list_queues nom message_rady message_unacknowleded, ou via l’interface de gestion en arrière-plan.

Si noAck est réglé sur false, le client doit envoyer activement un ack au serveur, et si le client ne confirme pas le message, la situation suivante se produira :



Tant que le programme est encore en cours, ces 10 messages restent non exécutés et ne peuvent pas être relivrés par RabbitMQ. Ce qui est encore plus puissant, c’est queLa consommation des messages RabbitMQ ne dispose pas de mécanisme de délai d’attente, c’est-à-dire que si le programme n’est pas redémarré, le message sera toujours en état Unacked. N’oubliez pas ces messages d’état non défectueux lorsque vous travaillez sur des événements opérationnels.

Prêt

Les messages avec ce statut existent dans la file d’attente pour être traités.

Non reconnu

Un message dans ce statut indique qu’il est déjà en cours de traitement mais pas accusé de réception.




Lorsque le programme est fermé (tant que le Consommateur est fermé), ces 10 messages reviennent en état Prêt.


Message de confirmation

Que se passe-t-il si le client envoie un appel au serveur ? C’est-à-dire, confirmer la réception du message ? Le code est le suivant :


Lorsque le second paramètre de la méthode BasicAck, multiple, est mis à false, cela signifie que RabbitMQ est informé que le message actuel a été accusé de réception.Si c’est vrai, un message supplémentaire plus petit que l’étiquette de livraison spécifiée par le premier paramètre sera reconnu。 (La confirmation en masse concerne toute la chaîne)

Annuler la confirmation

Que se passe-t-il si l’un des clients du programme distribué a une exception et souhaite annuler la confirmation du message et laisser d’autres clients traiter le message ?

Lorsqu’il y a une exception dans le message de consommation, nous devons annuler la confirmation, puis nous pouvons utiliser la méthode BasicReject de Channel.

Le premier paramètre spécifie l’étiquette de livraison, et le second paramètre décrit comment gérer ce message d’échec.Une valeur de vrai signifie que le message est remis dans l’en-tête de la file, et une valeur de faux signifie que le message est abandonné




Précédent:Apprendre à configurer votre propre serveur DNS !
Prochain:Baidu Maps pour obtenir les coordonnées de la ville
Publié sur 22/09/2021 20:49:04 |
Apprends à apprendre...
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com