Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 23648|Odpověď: 0

RabbitMQ BasicQos omezení spotřebitelského paralelního zpracování

[Kopírovat odkaz]
Zveřejněno 10.04.2018 22:36:02 | | | |


Nejprve máme na našem rabbitmq serveru 100 nezpracovaných zpráv, náhodně otevřeme spotřebitelského klienta a objeví se následující situace,

100 dat, všechna přenesená během okamžiku, ale nemůžeme zpracovat tolik dat najednou s jedním klientem, co bychom měli dělat?




Jak je vidět na obrázku výše, nepotvrdili jsme přijetí zprávy! Pokud producent bude dál posílat zboží, my spotřebitelé ho budeme dál dostávat!

Představte si, že my, jediný spotřebitel, dokážeme zpracovat až 60 zpráv za 1 minutu, zatímco producent může poslat 300 zpráv za 1 minutu, pokud,Máme spotřebitelského klienta, který potřebuje přijmout 300 zpráv najednou za 1 minutu, což překročilo naše maximální zatížení, což může vést k vyčerpání serverových zdrojů a zaseknutí spotřebitelského klienta
RabbitMQ nabízí funkci qoS (Quality of Service), tedy podle předpokladu neautomatického potvrzování zpráv, pokud není potvrzen určitý počet zpráv (nastavením hodnoty Qos na základě spotřeby nebo kanálu), nové zprávy nebudou konzumovány.



prefetchSize:0
prefetchCount: Říká RabbitMQ, aby neposílal spotřebiteli více než N zpráv najednou, tj. jakmile je N zpráv, které ještě nebyly ackovány, spotřebitel zablokuje, dokud nedojde k ackování zprávy
global:true\false Ať už se výše uvedená nastavení vztahují na kanály, jednoduše řečeno, ať už jsou výše uvedená omezení na úrovni kanálů nebo na úrovni spotřebitelů
Poznámka: Říká se, že prefetchSize a global nejsou implementovány rabbitmq, takže je zatím nebudu studovat


prefetch_count nabývá účinnosti, když no_ask=nepravdaTo znamená, že v případě automatického odpovídání jsou tyto dvě hodnotyNení v platnostiz

Nastavte prefetchCount = 3 pomocí metody BasicQos. To umožňuje RabbitMQ zpracovávat až 3 zprávy na jednoho uživatele současně. Jinými slovy, nebude distribuovat nové zprávy spotřebiteli, dokud neobdrží ACK. Tady je, jak to nastavit:





Jak můžete vidět na obrázku, Queue poslouchají současně dva spotřebitelé, ale všimněte si, že zpráva zde bude automaticky přijata pouze tehdy, pokud ji konzumuje jeden spotřebitel, a druhý spotřebitel tuto zprávu už nedostane znovu.

Oficiální web: http://www.rabbitmq.com/consumer-prefetch.html

Všimněte si, že tato metoda může způsobit, že fronta bude plná. Samozřejmě možná budete muset přidat více spotřebitelů nebo vytvořit více virtualHostů, abyste svůj design vylepšili.





Předchozí:EF implementuje hromadné vkládání, aktualizace a mazání do databáze
Další:Webový server IIS Express nebylo možné spustit
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com