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: 26359|Odpověď: 2

Podrobná analýza mechanismu odezvy na zprávy RabbitMQ

[Kopírovat odkaz]
Zveřejněno 30.03.2018 10:42:59 | | | |


Když spotřebitel zprávu obdrží a zpracování je dokončeno, pošle ack s tímto identifikátorem zprávy, aby serveru oznámil, že zpráva byla přijata a zpracování dokončeno. RabbitMQ čeká, až se ztratí spojení spotřebitele zpracovávajícího zprávu, než zjistí, že zpráva nebyla správně zpracována, takže RabbitMQ zprávu znovu odešle.
Potvrzení zprávy je ve výchozím nastavení vypnuté. Při inicializaci Consumera existuje parametr noAck,Pokud je nastaveno na true, spotřebitel vrátí ack hned, jak zprávu obdrží


Obecně platí, že běžně používaný scénář noack je nastaven na true, ale pro projekty s vysokými rizikovými požadavky, jako je platba. U každého sdělení musíme zajistit jeho integritu a správnost. Po obdržení zprávy musíte potvrdit, že byla vykonána správná obchodní logika, a pak aktivně vrátit žádost o schválení serveru. Zprávy ve frontě můžete zobrazit přes příkaz rabbitmqctl list_queues jméno message_rady message_unacknowleded nebo přes rozhraní pro správu na pozadí.

Pokud je noAck nastaven na false, klient musí aktivně odeslat ack serveru, a pokud klient zprávu nepotvrdí, nastane následující situace:



Dokud program běží, těchto 10 zpráv zůstává nevyužitých a RabbitMQ je nemůže znovu doručit. Co je ještě silnější, je to, žeKonzumace zpráv v RabbitMQ nemá mechanismus pro časový limit, tedy pokud program není restartován, zpráva bude vždy ve stavu Unaced. Nezapomeňte na tyto neporušené státní zprávy při práci na operačních událostech.

Připraveno

Zprávy s tímto stavem existují ve frontě ke zpracování.

Neuznáno

Zpráva v tomto stavu znamená, že je již zpracovávána, ale není potvrzena.




Když je program uzavřen (pokud je Consumer uzavřen), těchto 10 zpráv se vrátí do stavu Připraveno.


Potvrzovací zpráva

Co když klient pošle serveru hlášení? Tedy potvrdit přijetí zprávy? Kód je následující:


Když je druhý parametr metody BasicAck, násobek, nastaven na nepravdivé, znamená to, že RabbitMQ je informován, že aktuální zpráva byla potvrzena.Pokud je to pravda, bude potvrzena další zpráva menší než dodací tag specifikovaný prvním parametrem。 (Hromadné potvrzení platí pro celý kanál)

Potvrzení zrušení

Co když má jeden z klientů distribuovaného programu výjimku a chce zrušit potvrzení zprávy a nechat jiným klientům zprávu zpracovat?

Když je v spotřební zprávě výjimka, musíme potvrzení zrušit a pak můžeme použít základní metodu Odmítnout – kanál.

První parametr určuje dodací tag a druhý parametr popisuje, jak tuto zprávu o selhání zpracovat.Hodnota pravda znamená, že zpráva je vrácena zpět do hlavičky fronty, a hodnota nepravda znamená, že zpráva je opuštěna




Předchozí:Naučí vás, jak si nastavit vlastní DNS server!
Další:Baidu Maps pro získání souřadnic města
Zveřejněno 22.09.2021 20:49:04 |
Uč se učit...
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