Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 23835|Svar: 0

RabbitMQ BasicQos konsument parallell processeringsgräns

[Kopiera länk]
Publicerad på 2018-04-10 22:36:02 | | | |


För det första har vi 100 obehandlade meddelanden på vår rabbitmq-server, vi öppnar en konsumentklient slumpmässigt, och följande situation kommer att uppstå,

100 datastycken, alla skickade över på ett ögonblick, men vi kan inte bearbeta så mycket data samtidigt med en enda klient, vad ska vi göra?




Som visas på bilden ovan bekräftade vi inte mottagandet av meddelandet! Om producenten fortsätter att skicka det, kommer vi konsumenter att fortsätta få det!

Föreställ dig bara, om vi enskilda konsumenter kan bearbeta upp till 60 meddelanden på 1 minut, men en producent kan skicka 300 meddelanden på 1 minut, om,Vi har en konsumentklient som måste ta emot 300 meddelanden samtidigt på 1 minut, vilket har överskridit vår maximala belastning, vilket kan leda till att serverresurserna tar slut och konsumentklienten fastnar
RabbitMQ tillhandahåller en qoS (Quality of Service)-funktion, det vill säga, under förutsättningen att meddelanden inte bekräftas automatiskt, om ett visst antal meddelanden (genom att sätta värdet på Qos baserat på konsum eller kanal) inte bekräftas, kommer inga nya meddelanden att konsumeras.



prefetchSize:0
prefetchCount: Säger åt RabbitMQ att inte skicka mer än N meddelanden till en konsument samtidigt, dvs. när det finns N meddelanden som ännu inte har ackat, kommer konsumenten att blockera tills det finns ett meddelande-ack
global:true/false Oavsett om ovanstående inställningar gäller kanaler, för att uttrycka det enkelt, oavsett om ovanstående begränsningar gäller på kanalnivå eller konsumentnivå
Notera: Det sägs att prefetchSize och global inte implementeras av rabbitmq, så jag kommer inte att studera dem för tillfället


prefetch_count träder i kraft när no_ask=falsktDet vill säga, i fallet med auto-svar är dessa två värdenInte i praktikenav

Sätt prefetchCount = 3 via BasicQos-metoden. Detta gör att RabbitMQ kan behandla upp till 3 meddelanden per konsument samtidigt. Med andra ord kommer den inte att distribuera nya meddelanden till konsumenten förrän den får ACK. Så här ställer du in det:





Som du kan se i figuren lyssnar två konsumenter på Queue samtidigt, men observera att meddelandet här bara automatiskt ackes om det konsumeras av en konsument, och den andra konsumenten får inte meddelandet igen.

Officiell webbplats introduktion: http://www.rabbitmq.com/consumer-prefetch.html

Observera att denna metod kan göra kön full. Självklart kan du behöva lägga till fler Consumers eller skapa fler virtualHosts för att förfina din design.





Föregående:EF implementerar bulkinsättningar, uppdateringar och borttagningar av databaser
Nästa:IIS Express-webbservern kunde inte startas
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com