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

Skats: 23648|Atbildi: 0

RabbitMQ BasicQos patērētāju paralēlās apstrādes ierobežojums

[Kopēt saiti]
Publicēts 10.04.2018 22:36:02 | | | |


Pirmkārt, mūsu rabbitmq serverī ir 100 neapstrādāti ziņojumi, mēs nejauši atveram patērētāju klientu, un parādīsies šāda situācija:

100 datu vienības, kas tiek pārvietotas vienā mirklī, bet mēs nevaram apstrādāt tik daudz datu vienlaicīgi ar vienu klientu, kas mums jādara?




Kā parādīts iepriekš redzamajā attēlā, mēs neapstiprinājām ziņojuma saņemšanu! Ja ražotājs turpinās to sūtīt, mēs, patērētāji, turpināsim to saņemt!

Iedomājieties, ja mēs viens patērētājs varam apstrādāt līdz 60 ziņojumiem 1 minūtē, tomēr ražotājs var nosūtīt 300 ziņojumus 1 minūtē, ja,Mums ir patērētāja klients, kuram 1 minūtē vienlaikus jāsaņem 300 ziņojumi, kas ir pārsniedzis mūsu maksimālo slodzi, kas var novest pie servera resursu izsmelšanas un patērētāja klienta iestrēgšanas
RabbitMQ nodrošina qoS (pakalpojumu kvalitātes) funkciju, tas ir, saskaņā ar ziņojumu neautomātiskas apstiprināšanas priekšnoteikumu, ja netiek apstiprināts noteikts ziņojumu skaits (iestatot Qos vērtību, pamatojoties uz patēriņu vai kanālu), jauni ziņojumi netiks patērēti.



prefetchIzmērs:0
prefetchCount: Liek RabbitMQ vienlaicīgi nevirzīt patērētājam vairāk nekā N ziņojumus, t.i., tiklīdz ir N ziņojumi, kas vēl nav saņemti, patērētājs bloķēs, līdz būs ziņojums
global:true\false Vai iepriekš minētie iestatījumi tiek lietoti kanāliem, vienkārši sakot, vai iepriekš minētie ierobežojumi ir kanāla vai patērētāja līmenī
Piezīme: Ir teikts, ka prefetchSize un global netiek īstenoti ar rabbitmq, tāpēc es tos pagaidām nepētīšu


prefetch_count stājas spēkā, kad no_ask=falseTas nozīmē, ka automātiskās atbildes gadījumā šīs divas vērtības irNav spēkāno

Iestatiet prefetchCount = 3, izmantojot BasicQos metodi. Tas ļauj RabbitMQ vienlaikus apstrādāt līdz 3 ziņojumiem vienam patērētājam. Citiem vārdiem sakot, tas neizplatīs jaunus ziņojumus patērētājam, kamēr tas nesaņems ack. Tālāk ir aprakstīts, kā to iestatīt.





Kā redzams attēlā, ir divi patērētāji, kas vienlaikus klausās rindu, taču ņemiet vērā, ka ziņojums šeit tiks automātiski uztverts tikai tad, ja to patērēs viens patērētājs, un otrs patērētājs šo ziņojumu vairs nesaņems.

Oficiālās mājas lapas ievads: http://www.rabbitmq.com/consumer-prefetch.html

Ņemiet vērā, ka šī metode var izraisīt rindas pilnību. Protams, jums, iespējams, būs jāpievieno vairāk patērētāju vai jāizveido vairāk virtualHosts, lai uzlabotu savu dizainu.





Iepriekšējo:EF ievieš lielapjoma datu bāzes ievietošanu, atjaunināšanu un dzēšanu
Nākamo:IIS Express tīmekļa serveri nevarēja startēt
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