Visų pirma, savo rabbitmq serveryje turime 100 neapdorotų pranešimų, atsitiktinai atidarome vartotojo klientą ir pasirodys tokia situacija:
100 vienetų duomenų, visi perkelti akimirksniu, bet mes negalime apdoroti tiek daug duomenų vienu metu su vienu klientu, ką turėtume daryti?
Kaip parodyta aukščiau esančiame paveikslėlyje, mes nepatvirtinome pranešimo gavimo! Jei gamintojas ir toliau jį siųs, mes, vartotojai, ir toliau jį gausime!
Įsivaizduokite, jei mes, vienas vartotojas, galime apdoroti iki 60 pranešimų per 1 minutę, tačiau gamintojas gali išsiųsti 300 pranešimų per 1 minutę, jei,Turime vartotojų klientą, kuriam reikia gauti 300 pranešimų vienu metu per 1 minutę, o tai viršijo maksimalią apkrovą, todėl serverio ištekliai gali būti išeikvoti ir vartotojas gali įstrigti。
"RabbitMQ" teikia qoS (paslaugų kokybės) funkciją, tai yra, remiantis neautomatinio pranešimų patvirtinimo prielaida, jei tam tikras pranešimų skaičius (nustatant Qos vertę pagal vartojimą ar kanalą) nebus patvirtintas, nauji pranešimai nebus vartojami.
išankstinio paėmimo dydis:0 prefetchCount: liepia RabbitMQ nesiųsti vartotojui daugiau nei N pranešimų tuo pačiu metu, t. y. kai yra N pranešimų, kurie dar nebuvo užfiksuoti, vartotojas užblokuos, kol bus pranešimas ack global:true\false Ar aukščiau nurodyti parametrai taikomi kanalams, paprasčiau tariant, ar aukščiau nurodyti apribojimai yra kanalo, ar vartotojo lygiu
Pastaba: Sakoma, kad prefetchSize ir global nėra įgyvendinti rabbitmq, todėl kol kas jų nestudijuosiu
prefetch_count įsigalioja, kai no_ask=false,Tai yra, automatinio atsakymo atveju šios dvi reikšmės yraNegaliojaiš
Nustatykite prefetchCount = 3 naudodami BasicQos metodą. Tai leidžia "RabbitMQ" vienu metu apdoroti iki 3 pranešimų vienam vartotojui. Kitaip tariant, jis neplatins naujų pranešimų vartotojui, kol negaus ack. Štai kaip jį nustatyti:
Kaip matote paveikslėlyje, vienu metu "Queue" klausosi du vartotojai, tačiau atkreipkite dėmesį, kad pranešimas čia bus automatiškai užfiksuotas tik tuo atveju, jei jį sunaudos vienas vartotojas, o kitas vartotojas nebegaus šios žinutės.
Oficialus svetainės pristatymas: http://www.rabbitmq.com/consumer-prefetch.html
Atkreipkite dėmesį, kad dėl šio metodo eilė gali būti pilna. Žinoma, jums gali tekti pridėti daugiau vartotojų arba sukurti daugiau virtualHosts, kad patobulintumėte savo dizainą.
|