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

Pohľad: 26359|Odpoveď: 2

Hĺbková analýza mechanizmu odpovede na správy v RabbitMQ

[Kopírovať odkaz]
Zverejnené 30. 3. 2018 10:42:59 | | | |


Keď spotrebiteľ správu prijme a úloha spracovania je dokončená, pošle ACK s týmto identifikátorom správy, aby serveru oznámil, že správa bola prijatá a spracovanie je dokončené. RabbitMQ čaká, kým sa stratí spojenie spotrebiteľa spracúvajúceho správu, aby zistilo, že správa nebola správne spracovaná, takže RabbitMQ správu znovu odošle.
Potvrdenie správy je predvolene vypnuté. Pri inicializácii Consumer existuje parameter noAck,Ak je nastavená na true, spotrebiteľ vráti ack hneď, ako správu dostane


Všeobecne platí, že bežne používaný scenár noack je nastavený na true, ale pre projekty s vysokými rizikovými požiadavkami, ako je platba. Pre každé posolstvo musíme zabezpečiť jeho integritu a správnosť. Po získaní správy musíte potvrdiť, že bola vykonaná správna obchodná logika, a potom aktívne vrátiť hlásenie na server. Správy vo fronte si môžete prezerať cez rabbitmqctl list_queues názov message_rady message_unacknowleded príkaz alebo cez rozhranie správy na pozadí.

Ak je noAck nastavený na false, klient musí aktívne odoslať ack serveru, a ak klient správu nepotvrdí, nastane nasledujúca situácia:



Pokým program beží, týchto 10 správ zostáva nevyužitých a RabbitMQ ich nemôže znovu doručiť. Ešte silnejšie je, žeSpotreba správ v RabbitMQ nemá mechanizmus časového limitu, to znamená, že ak program nie je reštartovaný, správa bude vždy v stave Unaced. Nezabúdajte na tieto neporušené správy o stave pri práci na operačných udalostiach.

Pripravený

Správy s týmto stavom existujú vo fronte na spracovanie.

Neuznané

Správa v tomto stave znamená, že už je spracovaná, ale nie je potvrdená.




Keď je program zatvorený (pokiaľ je zatvorený spotrebiteľ), týchto 10 správ sa vráti do stavu Pripravené.


Potvrdenie správy

Čo ak klient pošle serveru upozornenie? Teda potvrdiť prijatie správy? Kód je nasledovný:


Keď je druhý parameter metódy BasicAck, multiple, nastavený na false, znamená to, že RabbitMQ je upozornený, že aktuálna správa bola potvrdená.Ak je to pravda, bude potvrdená ďalšia správa menšia ako dodacia značka špecifikovaná prvým parametrom。 (Hromadné potvrdenie je pre celý kanál)

Potvrdenie zrušenia

Čo ak má jeden z klientov distribuovaného programu výnimku a chce zrušiť potvrdenie správy a nechať správu spracovať iní klienti?

Keď je v správe o spotrebe výnimka, musíme potvrdenie zrušiť a potom môžeme použiť základnú metódu Odmietnuť (Channel).

Prvý parameter určuje dodaciu značku a druhý parameter popisuje, ako túto správu o zlyhaní spracovať.Hodnota true znamená, že správa je vrátená do hlavičky fronty, a hodnota false znamená, že správa je opustená




Predchádzajúci:Naučí vás, ako si nastaviť vlastný DNS server!
Budúci:Baidu Maps na získanie súradníc mesta
Zverejnené 22. 9. 2021 20:49:04 |
Nauč sa učiť...
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