Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 26359|Atbildi: 2

Padziļināta RabbitMQ ziņojuma atbildes mehānisma analīze

[Kopēt saiti]
Publicēts 30.03.2018 10:42:59 | | | |


Kad patērētājs saņem ziņojumu un apstrādes uzdevums ir pabeigts, tas nosūtīs ack ar šo ziņojuma identifikatoru, lai paziņotu serverim, ka ziņojums ir saņemts un apstrāde ir pabeigta. RabbitMQ gaida, līdz tiek zaudēta patērētāja, kas apstrādā ziņojumu, saite, pirms nosaka, ka ziņojums nav pareizi apstrādāts, tāpēc RabbitMQ pārsūta ziņojumu.
Ziņojuma apstiprinājums pēc noklusējuma ir izslēgts. Inicializējot patērētāju, ir noAck parametrs,Ja iestatīts uz true, patērētājs atgriezīs ack tiklīdz tas saņems ziņojumu


Vispārīgi runājot, bieži izmantotais scenārijs parasti ir iestatīts uz patiesu, bet projektiem ar augsta riska prasībām, piemēram, maksājumiem. Katram ziņojumam mums ir jānodrošina tā integritāte un pareizība. Pēc ziņojuma saņemšanas jums jāapstiprina, ka tiek izpildīta pareizā biznesa loģika, un pēc tam aktīvi jāatgriež serverī. Rindā esošos ziņojumus var apskatīt, izmantojot rabbitmqctl list_queues nosaukumu message_rady message_unacknowleded komandu vai fona pārvaldības interfeisu.

Ja noAck ir iestatīts uz false, klientam ir aktīvi jānosūta ack uz serveri, un, ja klients neapstiprina ziņojumu, radīsies šāda situācija:



Kamēr programma joprojām darbojas, šie 10 ziņojumi paliek neapmierināti, un RabbitMQ tos nevar atkārtoti piegādāt. Vēl spēcīgāk ir tas, kaRabbitMQ ziņojumu patēriņam nav taimauta mehānisma, tas ir, ja programma netiek restartēta, ziņojums vienmēr būs stāvoklī Unacked. Neaizmirstiet šos neapzinātos stāvokļa ziņojumus, strādājot pie operāciju notikumiem.

Gatavs

Apstrādājamajā rindā ir ziņojumi ar šādu statusu.

Neatzīts

Ziņojums šādā statusā norāda, ka tas jau tiek apstrādāts, bet nav apstiprināts.




Kad programma ir aizvērta (kamēr patērētājs ir aizvērts), šie 10 ziņojumi atgriezīsies stāvoklī Gatavs.


Apstiprinājuma ziņojums

Ko darīt, ja klients nosūta ack uz serveri? Tas ir, apstipriniet ziņojuma saņemšanu? Kods ir šāds:


Ja BasicAck metodes otrais parametrs, vairāki, ir iestatīts uz false, tas nozīmē, ka RabbitMQ tiek paziņots, ka pašreizējais ziņojums ir apstiprināts.Ja tas ir patiess, tiks apstiprināts papildu ziņojums, kas ir mazāks par piegādes tagu, ko norāda pirmais parametrs。 (Lielapjoma apstiprinājums attiecas uz visu kanālu)

Atcelt apstiprinājumu

Ko darīt, ja kādam no izplatītās programmas klientiem ir izņēmums un viņš vēlas atcelt ziņojuma apstiprinājumu un ļaut citiem klientiem apstrādāt ziņojumu?

Ja patēriņa ziņojumā ir izņēmums, mums ir jāatceļ apstiprinājums, un pēc tam mēs varam izmantot kanāla basicReject metodi.

Pirmais parametrs norāda piegādes tagu, bet otrais parametrs apraksta, kā apstrādāt šo kļūmes ziņojumu.Vērtība true nozīmē, ka ziņojums tiek ievietots atpakaļ rindas galvenē, un vērtība false nozīmē, ka ziņojums ir pamests




Iepriekšējo:Iemāciet jums iestatīt savu DNS serveri!
Nākamo:Baidu Maps, lai iegūtu pilsētas koordinātas
Publicēts 22.09.2021 20:49:04 |
Iemācieties mācīties...
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com