Interviewer : Comment concevoir le paramètre de délai d'expiration RabbitMQ, la file d'attente de lettres mortes et la file d'attente de retard ?

Bonjour! Bonjour à tous, je suis Xiaoqi, un programmeur peu fiable.
Xiaoqi a l'intention de partager certaines techniques de manière détendue et humoristique. Si vous pensez avoir appris quelque chose grâce à l'article de Xiaoqi, alors donnez un j'aime à Xiaoqi.
L'article est continuellement mis à jour, vous pouvez recherchez [Xiaoqi JAVA Interview] sur WeChat pour le lire dès que possible, et répondez à [Information] et il y a plus d'avantages que j'ai préparés pour vous !

Introduction

Nous utilisons souvent RabbitMQ , mais il possède de nombreuses fonctionnalités avancées que nous devons également maîtriser pour gérer une logique métier complexe dans des scénarios réels.

2. Entretien

Interviewer : Xiaoqi, d'accord, commençons l'interview

Moi : Allez, j'ai déjà faim et soif

insérez la description de l'image ici

Interviewer : Avez-vous utilisé RabbitMQ ?

moi : utilisé

3. Que se passe-t-il si RabbitMQ envoie un message pendant une longue période et que personne ne le traite et expire ?

Interviewer : Que se passe-t-il si RabbitMQ envoie un message pendant une longue période et que personne ne le traite et expire ?

Moi : Le message n'a pas été traité depuis longtemps et a expiré. Afin de ne pas affecter l'utilisation normale de l'échange, nous pouvons mettre le message expiré dans un échange de lettres mortes , puis lier une file d'attente à cet échange, qui est la file d'attente des lettres mortes , puis passez un Consumers spécial pour traiter ces messages expirés

insérez la description de l'image ici

Enquêteur : Le message entrera-t-il dans l'échange de lettres mortes uniquement s'il atteint l'heure d'expiration et n'est pas consommé ? Existe-t-il une autre situation ?

Moi : Il y a trois situations dans lesquelles un message devient lettre morte.
1 : la longueur des messages de la file d'attente atteint la limite.
2 : Le consommateur rejette le message et ne le place pas dans la file d'attente d'origine pour qu'il le renvoie.
3 : Il existe un paramètre d'expiration de message dans la file d'attente d'origine et le message n'a pas été consommé après le délai d'expiration.

Interviewer : Comment définit-on un échange de lettres mortes lié à une file d'attente de lettres mortes ?

Moi : Nous pouvons configurer le nom du commutateur de lettres mortes et le nom de la clé de routage entre le commutateur de lettres mortes et la file d'attente de lettres mortes via les deux paramètres x-dead-letter-exchange et x-dead-letter-routing-key .

insérez la description de l'image ici

4. Qu'est-ce que la durée de vie ?

Intervieweur : Qu'est-ce que le TTL ?

Moi : Le nom complet de TTL est Time To Live (durée de vie/délai d'expiration), qui est utilisé pour définir le délai d'expiration en mq.

Intervieweur : Comment définissons-nous généralement le délai d'expiration et quelles méthodes utilisons-nous ?

Moi : Nous avons deux façons de définir le délai d'expiration, l'une consiste à définir le délai d'expiration pour un seul message, et l'autre consiste à définir le délai d'expiration pour une file d'attente, de sorte que les messages envoyés à la file d'attente suivent ce délai d'expiration.

1 : La file d'attente définit le délai d'expiration : x-message-ttl, unité : ms (millisecondes), de sorte que tous les messages entrant dans la file d'attente suivent ce délai d'expiration.

insérez la description de l'image ici

2 : Définissez le délai d'expiration pour un seul message : expiration, unité : ms (millisecondes), afin que seul ce message ait un délai d'expiration.

insérez la description de l'image ici

Intervieweur : Et si je définissais une heure pour un seul message et une heure pour la file d'attente ?

Moi : Dans ce cas, selon le temps le plus court.

5. Comment concevoir la file d'attente de délai RabbitMQ ?

Interviewer : Alors, connaissez-vous la file d'attente, pour quels types de scénarios est-elle généralement utilisée ?

Moi : Je sais, la file d'attente se situe généralement après l'envoi du message au MQ, et le consommateur n'a pas besoin de le traiter immédiatement. Par exemple, lorsque nous commandons des plats à emporter, nous passons la commande avec succès. À ce moment, l'inventaire a été réduit, mais nous n'avons pas encore payé. Si nous ne payons jamais, la commande est automatiquement annulée au bout de 30 minutes et le stock est rétabli.

Interviewer : RabbitMQ a-t-il une file d'attente ? Comment concevoiriez-vous vous-même une file d'attente ?

Moi : RabbitMQ ne fournit pas la fonction de file d'attente de retard, mais nous pouvons utiliser la file d'attente de lettres mortes TTL + pour réaliser la fonction de file d'attente de retard.

insérez la description de l'image ici

Interviewer : Oui, mon garçon, vous avez une bonne compréhension de cette partie.

Moi : C'est bon, c'est de l'accumulation quotidienne

Interviewer : Le gars est vraiment bon, RabbitMQ est très bon, vous avez passé l'entretien, vous pouvez commencer votre travail demain

Moi : Ah, tu es tellement pressé, j'ai encore beaucoup de choses à raconter plus tard.

Intervieweur : Ne vous inquiétez pas, je vous écouterai lentement après votre arrivée. Je vous laisserai me parler après avoir fait des heures supplémentaires.

moi. . . C'est trop dur

6. Résumé

Ici, à propos de RabbitMQ n'a pas été trié, l'article continuera à être mis à jour plus tard, il est recommandé de le collecter.

Les commandes impliquées dans l'article doivent être frappées plusieurs fois comme moi, ce n'est qu'en frappant que vous pouvez savoir si vous maîtrisez vraiment les commandes.

Si vous pensez que mon article n'est pas mauvais, veuillez l'aimer. De plus, vous pouvez rechercher [Xiaoqi JAVA Interview] sur WeChat pour lire plus de bons articles et obtenir les informations que j'ai préparées pour vous.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44096133/article/details/124136055
conseillé
Classement