Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 26359|Odgovoriti: 2

Poglobljena analiza mehanizma odziva na sporočila RabbitMQ

[Kopiraj povezavo]
Objavljeno na 30. 03. 2018 10:42:59 | | | |


Ko uporabnik prejme sporočilo in je obdelava zaključena, pošlje ack s tem identifikatorjem sporočila, da strežniku sporoči, da je sporočilo prejeto in da je obdelava zaključena. RabbitMQ počaka, da se izgubi povezava uporabnika, ki obdeluje sporočilo, preden ugotovi, da sporočilo ni bilo pravilno obdelano, zato RabbitMQ ponovno pošlje sporočilo.
Potrditev sporočila je privzeto izklopljena. Pri inicializaciji Consumerja obstaja parameter noAck,Če je nastavljeno na true, bo potrošnik takoj po prejemu sporočila vrnil ack


Na splošno je pogosto uporabljeni scenarij noack nastavljen na true, vendar za projekte z visokimi tveganji, kot je plačilo. Za vsako sporočilo moramo zagotoviti njegovo integriteto in pravilnost. Ko prejmete sporočilo, morate potrditi, da je poslovna logika pravilno izvedena, nato pa aktivno vrniti odpoved strežniku. Sporočila v vrsti si lahko ogledate preko rabbitmqctl list_queues ime message_rady message_unacknowleded ukaz ali preko vmesnika za upravljanje v ozadju.

Če je noAck nastavljen na false, mora odjemalec aktivno poslati ack strežniku, in če odjemalec sporočila ne potrdi, se zgodi naslednja situacija:



Dokler program teče, teh 10 sporočil ostane neuporabljenih in jih RabbitMQ ne more ponovno dostaviti. Še močnejše pa je, daPoraba sporočil v RabbitMQ nima mehanizma za časovno omejitev, to pomeni, da če program ni ponovno zaganjen, bo sporočilo vedno v stanju Unaced. Ne pozabite na ta odprta sporočila o stanju, ko delate na operativnih dogodkih.

Pripravljeni

Sporočila s tem statusom obstajajo v vrsti za obdelavo.

Nepriznano

Sporočilo v tem statusu pomeni, da je že v obdelavi, vendar ni potrjeno.




Ko je program zaprt (dokler je Consumer zaprt), se teh 10 sporočil vrne v stanje Pripravljeno.


Potrditveno sporočilo

Kaj pa, če odjemalec pošlje ACK strežniku? Torej, potrditi prejem sporočila? Koda je naslednja:


Ko je drugi parameter metode BasicAck, multiple, nastavljen na false, to pomeni, da je RabbitMQ obveščen, da je bilo trenutno sporočilo potrjeno.Če je to res, bo dodatno sporočilo, manjše od oznake dostave, določene s prvim parametrom, potrjeno。 (Množična potrditev velja za celoten kanal)

Prekliči potrditev

Kaj pa, če ima eden od odjemalcev distribuiranega programa izjemo in želi preklicati potrditev sporočila ter dovoliti drugim odjemalcem, da sporočilo obdelajo?

Ko je v sporočilu o porabi izjema, moramo potrditev preklicati, nato pa lahko uporabimo osnovno metodo Zavrni, imenovano Channel.

Prvi parameter določa oznako dostave, drugi parameter pa opisuje, kako obravnavati to sporočilo o napaki.Vrednost resnično pomeni, da je sporočilo vrnjeno v glavo vrste, vrednost false pa pomeni, da je sporočilo opuščeno




Prejšnji:Naučil vas bo, kako nastaviti svoj DNS strežnik!
Naslednji:Baidu Maps za pridobitev mestnih koordinat
Objavljeno na 22. 09. 2021 20:49:04 |
Nauči se učiti...
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com