Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 26359|Atsakyti: 2

Išsami RabbitMQ pranešimo atsako mechanizmo analizė

[Kopijuoti nuorodą]
Paskelbta 2018-03-30 10:42:59 | | | |


Kai vartotojas gauna pranešimą ir apdorojimo užduotis yra baigta, jis siunčia ack su šiuo pranešimo identifikatoriumi, kad praneštų serveriui, kad pranešimas buvo gautas ir apdorojimas baigtas. "RabbitMQ" laukia, kol prarandama pranešimą apdorojančio vartotojo nuoroda, prieš nustatydama, kad pranešimas nebuvo tinkamai apdorotas, todėl "RabbitMQ" perduoda pranešimą iš naujo.
Pranešimo patvirtinimas išjungtas pagal numatytuosius nustatymus. Inicijuojant vartotoją yra parametras noAck,Jei nustatyta kaip teisinga, vartotojas grąžins ack iš karto, kai tik gaus pranešimą


Paprastai kalbant, dažniausiai naudojamas scenarijus paprastai nustatomas kaip teisingas, tačiau projektams, kuriems keliami dideli rizikos reikalavimai, pvz., mokėjimas. Kiekvienam pranešimui turime užtikrinti jo vientisumą ir teisingumą. Gavę pranešimą, turite patvirtinti, kad vykdoma teisinga verslo logika, ir tada aktyviai grąžinti ack į serverį. Eilėje esančius pranešimus galite peržiūrėti naudodami rabbitmqctl list_queues pavadinimą message_rady message_unacknowleded komandą arba fono valdymo sąsają.

Jei noAck nustatytas kaip false, klientas turi aktyviai siųsti ack į serverį, o jei klientas nepatvirtins pranešimo, susidarys tokia situacija:



Kol programa vis dar veikia, šie 10 pranešimų lieka neužfiksuoti ir RabbitMQ negali jų pristatyti iš naujo. Dar galingiau yra tai, kad"RabbitMQ" pranešimų vartojimas neturi skirtojo laiko mechanizmo, tai yra, jei programa nebus paleista iš naujo, pranešimas visada bus neužfiksuotas. Nepamirškite šių neužfiksuotų būsenos pranešimų, kai dirbate su operacijų įvykiais.

Paruošta

Šios būsenos pranešimai yra apdorojamoje eilėje.

Nepripažinta

Šios būsenos pranešimas rodo, kad jis jau apdorojamas, bet nepatvirtintas.




Kai programa uždaryta (kol vartotojas uždarytas), šie 10 pranešimų grįš į būseną Paruošta.


Patvirtinimo pranešimas

Ką daryti, jei klientas siunčia ack į serverį? Tai yra, patvirtinti pranešimo gavimą? Kodas yra toks:


Kai antrasis "BasicAck" metodo parametras, keli, nustatytas kaip false, tai reiškia, kad "RabbitMQ" pranešama, kad dabartinis pranešimas buvo patvirtintas.Jei teisinga, bus patvirtintas papildomas pranešimas, mažesnis už pirmojo parametro nurodytą pristatymo žymą。 (Masinis patvirtinimas skirtas visam kanalui)

Atšaukti patvirtinimą

Ką daryti, jei vienas iš paskirstytos programos klientų turi išimtį ir nori atšaukti pranešimo patvirtinimą ir leisti kitiems klientams apdoroti pranešimą?

Kai vartojimo pranešime yra išimtis, turime atšaukti patvirtinimą ir tada galime naudoti pagrindinį kanalo metodą.

Pirmasis parametras nurodo pristatymo žymę, o antrasis parametras aprašo, kaip tvarkyti šį gedimo pranešimą.Reikšmė true reiškia, kad pranešimas vėl įkeliamas į eilės antraštę, o reikšmė false reiškia, kad pranešimas atsisakomas




Ankstesnis:Išmokykite, kaip nustatyti savo DNS serverį!
Kitą:Baidu žemėlapiai miesto koordinatėms gauti
Paskelbta 2021-09-22 20:49:04 |
Išmokite mokytis...
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com