Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 23648|Svar: 0

RabbitMQ BasicQos forbruger parallel behandlingsgrænse

[Kopier link]
Opslået på 10/04/2018 22.36.02 | | | |


Først og fremmest har vi 100 ubehandlede beskeder på vores rabbitmq-server, vi åbner en forbrugerklient tilfældigt, og følgende situation opstår:

100 datastykker, alle sendt over på et øjeblik, men vi kan ikke behandle så meget data på én gang med én klient, hvad skal vi gøre?




Som vist på billedet ovenfor, bekræftede vi ikke modtagelsen af beskeden! Hvis producenten fortsætter med at sende det, vil vi forbrugere blive ved med at modtage det!

Forestil dig bare, at vi som enkelt forbruger kan behandle op til 60 beskeder på 1 minut, men en producent kan sende 300 beskeder på 1 minut, hvis,Vi har en forbrugerklient, der skal modtage 300 beskeder på én gang på 1 minut, hvilket har overskredet vores maksimale belastning, hvilket kan føre til, at serverressourcerne bliver udtømte, og forbrugerklienten sidder fast
RabbitMQ tilbyder en qoS (Quality of Service) funktion, det vil sige, under forudsætning af ikke-automatisk bekræftelse af beskeder, hvis et vist antal beskeder (ved at sætte værdien af Qos baseret på forbrug eller kanal) ikke bekræftes, vil nye beskeder ikke blive forbrugt.



prefetchStørrelse: 0
prefetchCount: Fortæller RabbitMQ, at den ikke skal sende mere end N beskeder til en forbruger på samme tid, dvs. når der er N beskeder, der endnu ikke er acket, vil forbrugeren blokere, indtil der er en besked-ack
global:true/false Uanset om ovenstående indstillinger anvendes på kanaler, for at sige det enkelt, om ovenstående begrænsninger gælder på kanalniveau eller på forbrugerniveau
Bemærk: Det siges, at prefetchSize og global ikke implementeres af rabbitmq, så jeg vil ikke studere dem foreløbig


prefetch_count træder i kraft, når no_ask=falskDet vil sige, i tilfælde af auto-svar er disse to værdierIkke i kraftaf

Sæt prefetchCount = 3 via BasicQos-metoden. Dette gør det muligt for RabbitMQ at behandle op til 3 beskeder pr. forbruger på én gang. Med andre ord vil den ikke distribuere nye beskeder til forbrugeren, før den modtager ack'en. Sådan sætter du det op:





Som du kan se på figuren, er der to forbrugere, der lytter til Queue samtidig, men bemærk, at beskeden her kun automatisk bliver acceket, hvis den forbruges af én forbruger, og den anden forbruger vil ikke modtage denne besked igen.

Officiel hjemmesideintroduktion: http://www.rabbitmq.com/consumer-prefetch.html

Bemærk, at denne metode kan få køen til at være fyldt. Selvfølgelig kan det være, du skal tilføje flere Consumers eller oprette flere virtualHosts for at forfine dit design.





Tidligere:EF implementerer masseindsættelser, opdateringer og sletninger af databaser
Næste:IIS Express-webserveren kunne ikke startes
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com