See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 26359|Vastuse: 2

RabbitMQ sõnumivastuse mehhanismi põhjalik analüüs

[Kopeeri link]
Postitatud 30.03.2018 10:42:59 | | | |


Kui tarbija sõnumi kätte saab ja töötlemisülesanne on lõpetatud, saadab ta selle sõnumi identifikaatoriga ack, et teavitada serverit, et sõnum on vastu võetud ja töötlemine on lõpetatud. RabbitMQ ootab, kuni tarbija link sõnumit töötleb kaob, enne kui otsustab, et sõnumit ei ole õigesti töödeldud, seega edastab RabbitMQ sõnumi uuesti.
Sõnumi kinnitus on vaikimisi välja lülitatud. Consumeri initsialiseerimisel on olemas noAck parameeter,Kui seatud tõele, tagastab tarbija ack'i kohe, kui sõnumi saab


Üldiselt on levinud stsenaarium noack seatud tõele, kuid projektide puhul, millel on kõrge riskiga nõuded, näiteks tasu. Iga sõnumi puhul peame tagama selle terviklikkuse ja korrektsuse. Pärast sõnumi saamist pead kinnitama, et õige äriloogika on täidetud, ja seejärel aktiivselt serverile ACK-i tagastama. Saad järjekorras olevaid sõnumeid vaadata rabbitmqctl list_queues nime message_rady message_unacknowleded käsu kaudu või taustahalduse liidese kaudu.

Kui noAck on seatud vääraks, peab klient aktiivselt saatma ACK-i serverile ning kui klient sõnumit ei kinnita, tekib järgmine olukord:



Nii kaua kui programm töötab, jäävad need 10 sõnumit tähelepanuta ega saa RabbitMQ neid uuesti edastada. Veelgi võimsam on see, etRabbitMQ sõnumite tarbimisel puudub ajapiirangu mehhanism, see tähendab, et kui programmi ei taaskäivitata, on sõnum alati Unacked-olekus. Ära unusta neid hoolimatuid olekusõnumeid, kui töötad operatsioonide sündmustega.

Valmis

Selle staatusega sõnumid on järjekorras, mida töödeldakse.

Tunnustamata

Selles olekus olev sõnum näitab, et seda juba töödeldakse, kuid seda ei kinnitata.




Kui programm on suletud (seni kuni tarbija on suletud), naasevad need 10 sõnumit valmisolekusse.


Kinnitussõnum

Mis siis, kui klient saadab serverile ack'i? See tähendab, et kinnitada sõnumi kättesaamist? Kood on järgmine:


Kui BasicAck meetodi teine parameeter, mitmekordne, on seatud vääraks, tähendab see, et RabbitMQ saab teate, et praegune sõnum on kinnitatud.Kui see on tõene, kinnitatakse täiendav sõnum, mis on väiksem kui esimese parameetri määratud tarnesilt。 (Täielik kinnitus kehtib kogu kanali kohta)

Tühista kinnitus

Mis saab siis, kui ühel hajutatud programmi kliendil on erand ja ta soovib sõnumi kinnitamise tühistada ning lasta teistel klientidel sõnumit töödelda?

Kui tarbimissõnumis on erand, peame kinnituse tühistama ja seejärel saame kasutada Channel'i basicReject meetodit.

Esimene parameeter määrab tarnesildi ja teine parameeter kirjeldab, kuidas seda rikkesõnumit käsitleda.Väärtus tõene tähendab, et sõnum pannakse tagasi järjekorra päisse ja väär väärtus tähendab, et sõnum on hüljatud




Eelmine:Õpetan sulle, kuidas oma DNS-serverit seadistada!
Järgmine:Baidu kaardid linnakoordinaatide saamiseks
Postitatud 22.09.2021 20:49:04 |
Õpi õppima...
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com