Ack ou Nack dans rabbitMQ
Je suis à l'aide de rabbitMQ, je profite de chaque message de la file d'attente avec basic_get sans automatiquement acking procédure, ce qui signifie que le message reste dans la file d'attente jusqu'à ce que je ack ou nack le message.
J'ai parfois des messages qui ne peuvent pas être traitées en raison de certains exception levée, ce qui l'empêche d'être entièrement traitée.
Question est: qu'est-ce grave si j'ai à la fois accusé de réception les messages dans la réussite et de l'exception levée, je veux dire en termes de résultat messages seront toujours de sortir de la file d'attente, de sorte qu'importe si j'utilise ack ou nack dans ce scénario?
Peut-être que je manque quelque chose lors de l'utilisation de chaque opration?
OriginalL'auteur JavaSa | 2015-03-01
Vous devez vous connecter pour publier un commentaire.
La de base.nack commande est apparemment un RabbitMQ extension, qui étend les fonctionnalités de de base.rejeter pour inclure un traitement de masse en mode. Les deux comprennent un "peu" (c'est à dire boolean) drapeau de
requeue
, donc en fait, vous avez plusieurs choix:nack
/reject
avecrequeue=1
: le message est renvoyé à la file d'attente, il vient comme s'il s'agissait d'un nouveau message, ce qui peut être utile dans le cas d'une défaillance temporaire du côté du consommateurnack
/reject
avecrequeue=0
et configuré Morte Lettre de Change (DLX), va publier le message pour que l'échange, lui permettant d'être repris par une autre file d'attentenack
/reject
avecrequeue=0
et pas de DLX vont tout simplement ignorer le messageack
va supprimer le message de la file d'attente, même si DLX est configuréSi vous n'avez pas DLX configuré, toujours à l'aide de
ack
sera le même quenack
/reject
avecrequeue=0
; cependant, l'utilisation de la logique de la fonction depuis le début vous donnera plus de flexibilité pour configurer les choses différemment plus tard.Une analogie commune (qui peut ou ne peut pas faire sens pour vous) est un échange, c'est comme un Bureau de Poste, et une file d'attente, c'est comme une Boîte POSTALE. Vous ne jamais publier un nouveau message à un échange (même si c'est la valeur par défaut de l'échange); l'échange se fera ensuite l'acheminer à zéro, un, ou plusieurs files d'attente, généralement basé sur le "routage". Donc le plus simple DLX serait un routés tout en une seule file d'attente, mais il pourrait être aussi complexe que vous avez besoin.
OriginalL'auteur
Ack et Nack à la fois supprimer le message de la file d'attente, la différence est que lorsque vous Nack un message, il va dans le DLX (lettre morte de la file d'attente, s'il y a définies pour que la file d'attente.
OriginalL'auteur