Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 23648|Svare: 0

RabbitMQ BasicQos forbruker parallell prosesseringsgrense

[Kopier lenke]
Publisert på 10.04.2018 22:36:02 | | | |


Først og fremst har vi 100 ubehandlede meldinger på rabbitmq-serveren vår, vi åpner en forbrukerklient tilfeldig, og følgende situasjon vil oppstå:

100 databiter, alle sendt over på et øyeblikk, men vi kan ikke behandle så mye data samtidig med én enkelt klient, hva bør vi gjøre?




Som vist på bildet over, bekreftet vi ikke mottakelsen av meldingen! Hvis produsenten fortsetter å sende det, vil vi forbrukere fortsette å motta det!

Tenk deg, hvis vi enkeltbrukere kan behandle opptil 60 meldinger på 1 minutt, men en produsent kan sende 300 meldinger på 1 minutt, hvis,Vi har en forbrukerklient som må motta 300 meldinger samtidig på ett minutt, noe som har overskredet vår maksimale belastning, noe som kan føre til at serverressursene blir brukt opp og forbrukerklienten setter seg fast
RabbitMQ tilbyr en qoS (Quality of Service)-funksjon, det vil si, under forutsetning av ikke-automatisk bekreftelse av meldinger, hvis et visst antall meldinger (ved å sette verdien av Qos basert på konsum eller kanal) ikke bekreftes, vil ikke nye meldinger bli konsumert.



prefetchSize:0
prefetchCount: Forteller RabbitMQ at de ikke skal sende mer enn N meldinger til en forbruker samtidig, det vil si at når det er N meldinger som ennå ikke har akket, vil forbrukeren blokkere til det er en meldings-ack
global:true\false Enten de ovennevnte innstillingene gjelder for kanaler, for å si det enkelt, om de ovennevnte begrensningene gjelder på kanalnivå eller forbrukernivå
Merk: Det sies at prefetchSize og global ikke implementeres av rabbitmq, så jeg vil ikke studere dem foreløpig


prefetch_count trer i kraft når no_ask=falskDet vil si, i tilfelle auto-svar, er disse to verdieneIkke i kraftav

Sett prefetchCount = 3 via BasicQos-metoden. Dette gjør det mulig for RabbitMQ å behandle opptil 3 meldinger per forbruker samtidig. Med andre ord vil den ikke distribuere nye meldinger til forbrukeren før den mottar ACK. Slik setter du det opp:





Som du kan se på figuren, er det to forbrukere som lytter til Kø samtidig, men merk at meldingen her bare automatisk vil bli akseptert hvis den konsumeres av én forbruker, og den andre brukeren vil ikke få denne meldingen igjen.

Offisiell nettsideintroduksjon: http://www.rabbitmq.com/consumer-prefetch.html

Merk at denne metoden kan føre til at køen blir full. Selvfølgelig kan det hende du må legge til flere Consumers eller lage flere virtualHosts for å forbedre designet ditt.





Foregående:EF implementerer masseinnsettinger, oppdateringer og slettinger av databaser
Neste:IIS Express-webserveren kunne ikke startes
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com