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

Vue: 23648|Répondre: 0

Limite de traitement parallèle grand public BasicQos

[Copié le lien]
Publié sur 10/04/2018 22:36:02 | | | |


Tout d’abord, nous avons 100 messages non traités sur notre serveur rabbitmq, nous ouvrons un client grand public au hasard, et la situation suivante apparaîtra,

100 données sont toutes transférées en un instant, mais nous ne pouvons pas traiter autant de données en même temps avec un seul client, que devrions-nous faire ?




Comme montré sur l’image ci-dessus, nous n’avons pas confirmé la réception du message ! Si le producteur continue à l’envoyer, nous, consommateurs, continuerons à le recevoir !

Imaginez simplement que nous, un seul consommateur, pouvons traiter jusqu’à 60 messages en 1 minute, cependant, un producteur peut envoyer 300 messages en 1 minute, si,Nous avons un client grand public qui doit recevoir 300 messages en même temps en 1 minute, ce qui a dépassé notre charge maximale, ce qui peut entraîner l’épuisement des ressources serveur et le client grand public bloqué
RabbitMQ propose une fonctionnalité qoS (Qualité de Service), c’est-à-dire, sous prétexte d’une confirmation non automatique des messages, si un certain nombre de messages (en fixant la valeur de QoS basée sur consomme ou channel) n’est pas confirmé, de nouveaux messages ne seront pas consommés.



prefetchSize :0
prefetchCount : Dit à RabbitMQ de ne pas envoyer plus de N messages à un consommateur en même temps, c’est-à-dire qu’une fois que N messages n’ont pas encore été ackés, le consommateur bloquera jusqu’à ce qu’il y ait un message ack
global :true\false Que les paramètres ci-dessus s’appliquent aux canaux, pour faire simple, que les restrictions ci-dessus soient au niveau du canal ou au niveau consommateur
Note : Il est dit que prefetchSize et global ne sont pas implémentés par rabbitmq, donc je ne les étudierai pas pour le moment


prefetch_count prend effet lorsque no_ask = fauxC’est-à-dire que, dans le cas de la réponse automatique, ces deux valeurs sontPas en vigueurde

Définir prefetchCount = 3 via la méthode BasicQos. Cela permet à RabbitMQ de traiter jusqu’à 3 messages par consommateur simultanément. En d’autres termes, il ne distribuera pas de nouveaux messages au consommateur tant qu’il ne reçoit pas l’ack. Voici comment le configurer :





Comme vous pouvez le voir sur la figure, il y a deux consommateurs qui écoutent Queue en même temps, mais notez que le message ici ne sera automatiquement accepté que s’il est consommé par un consommateur, et que l’autre consommateur ne recevra pas ce message à nouveau.

Introduction du site officiel : http://www.rabbitmq.com/consumer-prefetch.html

Notez que cette méthode peut rendre la file d’attente pleine. Bien sûr, vous devrez peut-être ajouter plus de Consommateurs ou créer plus de Virtual Hosts pour affiner votre design.





Précédent:EF met en œuvre des insertions, mises à jour et suppressions massives de bases de données
Prochain:Le serveur web IIS Express n’a pas pu être démarré
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