Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 23648|Odpoveď: 0

RabbitMQ BasicQos limit spotrebiteľského paralelného spracovania

[Kopírovať odkaz]
Zverejnené 10. 4. 2018 22:36:02 | | | |


V prvom rade máme na našom rabbitmq serveri 100 nespracovaných správ, náhodne otvoríme spotrebiteľského klienta a objaví sa nasledujúca situácia,

100 dát, všetky sa posunú v okamihu, ale nemôžeme spracovať toľko dát naraz s jedným klientom, čo by sme mali robiť?




Ako je vidieť na obrázku vyššie, nepotvrdili sme prijatie správy! Ak výrobca bude naďalej posielať objednávky, my spotrebitelia ich budeme naďalej dostávať!

Len si predstavte, že my, jeden spotrebiteľ, dokážeme spracovať až 60 správ za 1 minútu, avšak producent môže poslať 300 správ za 1 minútu, ak,Máme spotrebiteľského klienta, ktorý musí prijať 300 správ naraz za 1 minútu, čo prekročilo naše maximálne zaťaženie, čo môže viesť k vyčerpaniu serverových zdrojov a zaseknutiu spotrebiteľského klienta
RabbitMQ poskytuje funkciu qoS (Quality of Service), teda podľa predpokladu neautomatického potvrdenia správ, ak určitý počet správ (nastavením hodnoty Qos na základe spotreby alebo kanála) nie je potvrdený, nové správy sa nespotrebujú.



prefetchSize:0
prefetchCount: Hovorí RabbitMQ, aby neposielal spotrebiteľovi naraz viac ako N správ, t.j. keď je N správ, ktoré ešte neboli ackované, spotrebiteľ zablokuje, kým nebude hlásenie odoslané
global:true\false Či sa vyššie uvedené nastavenia vzťahujú na kanály, jednoducho povedané, či už sú uvedené obmedzenia na úrovni kanálov alebo na úrovni spotrebiteľa
Poznámka: Hovorí sa, že prefetchSize a global nie sú implementované rabbitmq, takže ich zatiaľ nebudem študovať


prefetch_count nadobúda účinok, keď no_ask=nepravdaTo znamená, že v prípade automatického odpovedania sú tieto dve hodnotyNie je v platnostiz

Nastavte prefetchCount = 3 pomocou metódy BasicQos. To umožňuje RabbitMQ spracovať až 3 správy na jedného používateľa naraz. Inými slovami, nebude distribuovať nové správy spotrebiteľovi, kým nedostane ACK. Tu je návod, ako to nastaviť:





Ako vidíte na obrázku, dvaja spotrebitelia počúvajú Queue súčasne, ale všimnite si, že správa tu bude automaticky prijatá len vtedy, ak ju spotrebuje jeden spotrebiteľ, a druhý spotrebiteľ túto správu už nedostane znova.

Oficiálny úvod na webovej stránke: http://www.rabbitmq.com/consumer-prefetch.html

Všimnite si, že táto metóda môže spôsobiť, že fronta bude plná. Samozrejme, možno budete musieť pridať viac Consumers alebo vytvoriť viac virtualHostov, aby ste vylepšili svoj dizajn.





Predchádzajúci:EF implementuje hromadné vkladanie, aktualizácie a mazanie databázy
Budúci:Webový server IIS Express sa nepodarilo spustiť
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com