Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 26359|Vastaus: 2

Syvällinen analyysi RabbitMQ:n viestivasteen mekanismista

[Kopioi linkki]
Julkaistu 30.3.2018 10.42.59 | | | |


Kun kuluttaja vastaanottaa viestin ja käsittelytehtävä on suoritettu, se lähettää ack-viestin tällä viestitunnisteella ilmoittaakseen palvelimelle, että viesti on vastaanotettu ja käsittely on valmis. RabbitMQ odottaa, kunnes käyttäjän viestiä käsittelevä linkki katoaa, ennen kuin toteaa, ettei viestiä ole käsitelty oikein, joten RabbitMQ lähettää viestin uudelleen.
Viestin kuittaus on oletuksena pois päältä. Consumerin alustuksessa on noAck-parametri,Jos asetuksena on true, kuluttaja palauttaa ack-vastauksen heti viestin saatuaan


Yleisesti käytetty skenaario noack on yleensä asetettu todeksi, mutta projekteissa, joissa on korkean riskin vaatimukset, kuten maksu. Jokaisen viestin kohdalla meidän täytyy varmistaa sen eheys ja oikeellisuus. Kun viesti on saatu, sinun täytyy varmistaa, että oikea liiketoimintalogiikka on suoritettu, ja palauttaa aktiivisesti ack palvelimelle. Voit tarkastella viestejä jonossa rabbitmqctl list_queues nimen message_rady message_unacknowleded komennon kautta tai taustahallinnan käyttöliittymän kautta.

Jos noAck on asetettu epätosi, asiakkaan täytyy aktiivisesti lähettää ack palvelimelle, ja jos asiakas ei vahvista viestiä, tapahtuu seuraava tilanne:



Niin kauan kuin ohjelma on käynnissä, nämä 10 viestiä pysyvät huomaamattomina eikä RabbitMQ voi toimittaa niitä uudelleen. Vielä voimakkaampaa on se, ettäRabbitMQ-viestinkulutuksessa ei ole aikakatkaisumekanismia, eli jos ohjelmaa ei käynnistetä uudelleen, viesti on aina Unacked-tilassa. Älä unohda näitä huomaamattomia tilaviestejä työskennellessäsi operaatioiden tapahtumien parissa.

Valmiina

Tämän tilan viestit ovat jonossa käsiteltäväksi.

Tunnustamaton

Tässä tilassa oleva viesti osoittaa, että sitä käsitellään jo, mutta sitä ei kuvastata.




Kun ohjelma on suljettu (niin kauan kuin kuluttaja on suljettu), nämä 10 viestiä palaavat valmiustilaan.


Vahvistusviesti

Entä jos asiakas lähettää ackin palvelimelle? Eli vahvistaa viestin vastaanotto? Koodi on seuraava:


Kun BasicAck-metodin toinen parametri, moninkertainen, asetetaan epätosi, se tarkoittaa, että RabbitMQ saa ilmoituksen, että nykyinen viesti on kuitoitettu.Jos tämä on totta, vahvistetaan lisäviesti, joka on pienempi kuin ensimmäisen parametrin määrittelemä toimitustunniste。 (Massavahvistus koskee koko kanavaa)

Peruuta vahvistus

Entä jos jollain hajautetun ohjelman asiakkaalla on poikkeus ja hän haluaa peruuttaa viestin vahvistuksen ja antaa muiden asiakkaiden käsitellä viestin?

Kun kulutusviestissä on poikkeus, vahvistus täytyy peruuttaa, ja sitten voimme käyttää Channelin basicEject-menetelmää.

Ensimmäinen parametri määrittää toimitustunnisteen, ja toinen parametri kuvaa, miten tämä vikaviesti käsitellään.Arvo tosi tarkoittaa, että viesti palautetaan jonon otsikkoon, ja väärin arvo tarkoittaa, että viesti hylätään




Edellinen:Opetan sinulle, miten perustaa oma DNS-palvelin!
Seuraava:Baidu-kartat kaupunkikoordinaattien saamiseksi
Julkaistu 22.9.2021 20.49.04 |
Opettele oppimaan...
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com