See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 44647|Vastuse: 8

[WinForm] rabbitMQ järjekorra sõnumi püsivus [lähtekoodiga]

[Kopeeri link]
Postitatud 09.04.2018 10:23:21 | | | |
Vaikimisi ei püsita rabbitMQ järjekorra sõnumeid kõvakettale, mis tähendab, et kui rabbitMQ teenus taaskäivitatakse, kaovad sõnumid.

Järjekordade püsivus

Näiteks tuvastatakse järjekorra püsivusdurableis on seatud tõele, mis tähendab, et tegemist on püsiva järjekorraga, siis pärast teenuse taaskäivitamist eksisteerib see samuti, sest teenus salvestab püsiva järjekorra kõvakettale ning teenuse taaskäivitamisel taastab see varasema järjekorra. Järjekorda saab säilitada, kuid see, kas sees olevad sõnumid on püsivad, sõltub sõnumi püsivuse seadistustest. Teisisõnu, kui enne taaskäivitust järjekorda sõnumit ei saadeta, sõltub algse sõnumi olemasolu järjekorras ka pärast taaskäivitust sõnumi saatmise hetkel.
Kui soovid, et sõnumid jääksid püsivaks pärast taaskäivitust, pead määrama identiteedi, et sõnum püsib.

Seadista järjekorra püsivus:




Meetodi neljas parameeter, autoDelete, sisestatakse tavaliselt vale. Dokumentatsioon kirjeldab seda parameetrit, kui see on tõsi, mis tähendab, et kui järjekorda enam ei kasutata (ei ole tellitud), kustutab server selle. Minu testimise käigus, kui kõik ühenduse muutmise järjekorra saajad on lahti ühendatud, kustutatakse järjekord, isegi kui seal on veel töötlemata sõnumeid. RabbitMQ taaskäivitused eemaldavad need samuti. Kui sisestatakse vale, ei kustuta teenus järjekorda ja järjekorras olevad sõnumid jäävad alles, kui kõik sellega ühendatud kliendid on lahti ühendatud. Saatja saab panna sõnumeid muudatusjärjekorda ka siis, kui kliendi ühendus puudub, ja kui klient avaneb, saab ta need sõnumid. Kui aga RabbitMQ teenus taaskäivitatakse, kaob järjekord ja sõnumid kaovad loomulikult.

Kolmas parameeter on eksklusiivne ning dokumentatsioonis on kirjas, et kui see on tõsi, siis katkeb järjekorra ühendus ning järjekord kustutatakse koos sees olevate sõnumitega.

Teine parameeter, vastupidav, on dokumentatsioonis kirjeldatud nii, et kui see on tõene, esindab see püsivat järjekorda, mis eksisteerib ka pärast teenuse taaskäivitumist. Sest teenus salvestab püsiva järjekorra kõvakettale ja kui teenus taaskäivitatakse, kinnitab see järjekorra uuesti. Muidugi peab see nii olema, kui nii automaatne kustutamine kui ka eksklusiivne on vale. Järjekorda saab säilitada, kuid see, kas sees olevad sõnumid on püsivad, sõltub sõnumi püsivuse seadistustest. Teisisõnu, kui enne taaskäivitust saadetakse järjekorda veel sõnumeid, sõltub see, kas algne sõnum on järjekorras ka pärast taaskäivitust, saatja seadistustest sõnumi saatmisel.


Pärast koodi muutmist proovime seda käivitada ja viga on järgmine:

Käsitlemata erand: RabbitMQ.Client.Exceptions.OperationInterruptedException: AMQP operatsioon katkestati: AMQP lähedane põhjus, algatatud Peeri poolt, code=406, text="PRECONDITION_FAILED - ebavõrdne arg 'vastupidav' järjekorra 'hello' jaoks vhostis 'myserver': vastu võetud 'true', kuid praegune on 'false'", classId=50, methodId=10, cause=



Sest me oleme määratlenud püsiva järjekorra nimega hello. RabbitMQ ei luba olemasolevaid järjekordi ümber defineerida erinevate parameetrite seadistustega.

On kaks lahendust:

1: Kuuluta järjekord uuesti teise nimega, näiteks my_queue
2: Kustuta määratletud "tere" järjekord aadressiga http://localhost:15672 ja logi sisse kasutajanime ja parooliga. RabbitMQ vaikimisi parool ja kasutajanimi on külalised. Klõpsa "järjekord" veerul, et näha järjekorra nimekirja, klõpsa "tere" järjekorral, et laiendada järjekorra detaile. Tõmba leht lõpuni, seal on punkt "Kustuta", klõpsa sellel, vajuta nuppu "Kustuta järjekord" ja saad järjekorra kustutada. Kui kood käivitatakse, luuakse tervitusjärjekord, mis toetab püsivust.



Sõnumite püsivus

Kui soovid pärast taaskäivitust sõnumi püsivana hoida, pead seadistama sõnumi püsivaks. Seade on siis, kui saatja selle saadab, mis on suhteliselt lihtne, ja kood on järgmine:


DeliveryMode on vaikimisi 1, mittepüsiv, ja seade 2 tähendab, et sõnum on püsiv

Pärast koodi muutmist proovime avada ainult tootjaprogrammi sõnumite saatmiseks, seejärel taaskäivitame rabbitMQ teenuse, avame tarbija uuesti ja leiame, et sõnum pole kadunud.

(Lõpp)

Lisatud on C# lähtekood:

Turistid, kui soovite näha selle postituse peidetud sisu, palunVastuse





Eelmine:Erandsõnum: "StrongTypeException: IsPrima...
Järgmine:Sissejuhatus C# delegaatidesse (delegaat, tegevus, funktsioon, predikaat)
Postitatud 09.04.2018 13:17:51 |
Õpi õppima
Postitatud 25.06.2019 23:22:47 |
Õpi õppima
Postitatud 29.06.2019 09:36:23 |
Miks ma demot ei näinud, pean vastama, et seda näha
Postitatud 09.07.2019 17:34:42 |
Ma tahan C# lähtekoodi
Postitatud 24.07.2019 14:21:51 |
See on hea, see on täpselt see, mida ma vajan
Postitatud 11.04.2020 14:34:54 |
Õpi seda
Postitatud 01.01.2022 14:45:24 |
1111111111111111
 Üürileandja| Postitatud 03.05.2023 22:12:22 |
RabbitMQ järjekorra parameetrid ja nende tähendused


/**
* Koosta uus järjekord, millele on antud nimi, vastupidavuslipp, automaatse kustutamise lipp ja argumendid.
* @param nimeta järjekorra nime – ei tohi olla null; Seadista "", et maakler genereeriks nime.
* @param vastupidav tõsi, kui deklareerime vastupidava järjekorra (järjekord jääb serveri taaskäivituse üle elavaks)
* @param eksklusiivne tõene, kui deklareerime eksklusiivse järjekorra (järjekorda kasutavad ainult deklareerijad
* ühendus)
* @param autoDelete true, kui server peaks järjekorra kustutama, kui seda enam ei kasutata
* @param argumendid, mida kasutatakse järjekorra deklareerimiseks
*/
public Queue(String name, boolean durable, boolean exclusive, boolean autoDelete, Map<String, Object> arguments) {
   Assert.notNull(name, "'name' ei saa olla null");
   this.name = nimi;
   this.actualName = StringUtils.hasText(name)? Nimi
         : (Base64UrlNamingStrategy.DEFAULT.generateName() + "_awaiting_declaration");
   this.durable = vastupidav;
   this.exclusive = eksklusiivne;
   this.autoDelete = autoDelete;
   this.arguments = arguments != null ? argumendid : uus HashMap<>();
}

Parameetrite tutvustus:
1. nimi: järjekorra nimi;
2. actualName: Vaikimisi kasutatakse järjekorra tegelikku nime, nimeparameetrit, kui nimi on tühi, genereeritakse see vastavalt reeglitele;
3. vastupidavus: kas see on püsiv;
4. Eksklusiivne: kas see on eksklusiivne või eksklusiivne;
5. autoDelete: kas kustutada automaatselt;
6. Argumendid: Järjekorra teistel atribuudi parameetritel on järgmised valikud, vt Argumendid joonisel 2:
(1) x-message-ttl: sõnumi aegumisaeg, millisekundites;
(2) x-aegub: järjekorra aegumisaeg, kui kaua järjekorda kustutatakse, kui sellele ei pääse ligi, ühik: millisekundid;
(3) x-max-length: järjekorra maksimaalne pikkus, kui see ületab maksimaalse väärtuse, kustutatakse sõnum järjekorra päisest;
(4) x-max-length-bytes: järjekorra sõnumi sisu hõivab maksimaalse ruumi, piiratud mälu suurusega, ja kui see ületab selle läve, kustutatakse sõnum järjekorra päisest;
(5) x-ületäitmine: Seadista järjekorra ületäitmise käitumine. See määrab, mis juhtub sõnumiga, kui järjekorra maksimaalne pikkus on saavutatud. Kehtivad väärtused on drop-head, reject-publish või reject-publish-dlx. Quorum-järjekorra tüübid toetavad ainult drop-headi;
(6) x-dead-letter-exchange: surnud kirjavahetuse nimi ning aegunud või kustutatud sõnumid (pika järjekorra pikkuse või läve ületava ruumi tõttu) saab määrata vahetusele saatmiseks;
(7) x-dead-letter-routing-key: surnud tähe sõnumi marsruutimisvõti, mida kasutatakse, kui sõnum saadetakse surnud tähe vahetajale, kui see pole seatud, kasutatakse sõnumi algset marsruutimisvõtme väärtust
(8) x-üks-aktiivne tarbija: näitab, kas järjekord on üks aktiivne tarbija, kui see on tõsi, tarbib sõnumeid ainult üks registreeritud tarbijate grupist, teised ignoreeritakse ja vale, kui sõnum jagatakse kõigile tarbijatele tsüklis (vaikimisi vale)
(9) x-max-priority: maksimaalne prioriteetide arv, mida järjekord toetab; Kui seda pole seadistatud, ei toeta järjekord sõnumi prioriteeti;
(10) x-queue-mode (Laisk režiim): Sea järjekord viivituse režiimile, hoia kettal võimalikult palju sõnumeid, et vähendada RAM-i kasutust; Kui seda pole seadistatud, hoiab järjekord mäluvahemälu, et sõnumeid võimalikult kiiresti edastada;
(11) x-queue-master-locator: Seadista peegli järjekorra peasõlme info klastrirežiimis.


Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com