Esiteks on meil 100 töötlemata sõnumit meie rabbitmq serveris, avame juhuslikult tarbijakliendi ja ilmub järgmine olukord,
100 andmetükki, kõik korraga üle lükatud, aga me ei saa nii palju andmeid korraga töödelda ühe kliendiga, mida peaksime tegema?
Nagu ülaloleval pildil näha, me ei kinnitanud sõnumi kättesaamist! Kui tootja jätkab selle saatmist, saame meie tarbijad seda edasi!
Kujutage ette, kui meie üksik tarbija suudaksime töödelda kuni 60 sõnumit ühe minutiga, kuid tootja võib saata 300 sõnumit ühe minutiga, kui,Meil on tarbijaklient, kes peab ühe minuti jooksul korraga vastu võtma 300 sõnumit, mis on ületanud meie maksimaalse koormuse, mis võib viia serveri ressursside ammendamiseni ja tarbijakliendi kinnijäämiseni。
RabbitMQ pakub qoS (teenuse kvaliteedi) funktsiooni, see tähendab, et sõnumite mitteautomaatse kinnitamise eeldusel, kui teatud arv sõnumeid (määrates QoS-i väärtuse tarbimise või kanali alusel) ei ole kinnitatud, ei tarbita uusi sõnumeid.
prefetchSize:0 prefetchCount: Ütleb RabbitMQ-le, et ta ei tohi tarbijale korraga saata rohkem kui N sõnumit, st kui on N sõnumit, mis pole veel vastanud, blokeerib tarbija kuni sõnumi vastuvõtmiseni global:true\false Kas ülaltoodud seaded rakendatakse kanalitele, lihtsustatult, kas need piirangud kehtivad kanalitasandil või tarbijatasemel
Märkus: Öeldakse, et prefetchSize ja global ei ole rabbitmq poolt rakendatud, seega ma ei hakka neid praegu uurima
prefetch_count jõustub, kui no_ask=vale,See tähendab, et automaatse vastuse puhul on need kaks väärtust järgmisedEi ole mõjuof
Sea prefetchCount = 3 BasicQos meetodi abil. See võimaldab RabbitMQ-l töödelda korraga kuni 3 sõnumit iga tarbija kohta. Teisisõnu, see ei levita tarbijale uusi sõnumeid enne, kui ta on saanud ack'i. Siin on, kuidas seda seadistada:
Nagu jooniselt näha, kuulavad Queue'i korraga kaks tarbijat, kuid tuleb märkida, et siin registreeritakse sõnum automaatselt ainult siis, kui üks tarbija selle tarbib, ning teine tarbija ei saa seda sõnumit enam.
Ametliku veebilehe sissejuhatus: http://www.rabbitmq.com/consumer-prefetch.html
Pane tähele, et see meetod võib põhjustada järjekorra täitumise. Loomulikult võib sul olla vaja lisada rohkem tarbijaid või luua rohkem virtuaalseid hoste, et oma disaini täiustada.
|