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

Vaade: 13505|Vastuse: 2

ActiveMQ püsiva tellimuse seaded

[Kopeeri link]
Postitatud 09.01.2017 11:12:10 | | |

ActiveMQ püsiva tellimuse seaded
Määrates kirjastajale PERSISTENT delivery režiimi, saad kasutada püsivaid tellimusi tellijatele, mis tagab, et Pub/Sub programm saab kõik avaldatud sõnumid kätte.
Sõnumitellimused jagunevad mittekestvateks ja püsivateks tellimusteks ning mittepüsivad tellimused saavad teemale saadetud sõnumeid vastu võtta ainult siis, kui klient on aktiivne, st kui klient on võrguühenduseta, siis selle perioodi jooksul teemale saadetud sõnumid kaovad ja neid ei jõua kunagi kätte. Kui klient on võrguühenduseta, salvestab ActiveMQ kõik subjektile saadetud sõnumid vastavalt oma ID-le, ja kui klient ühendub uuesti ActiveMQ-ga, saab ta kõik subjektile saadetud sõnumid, kui ta on võrguühenduseta. Püsivad tellimused suurendavad üldkulusid ja neil on korraga ainult üks aktiivne kasutaja püsivas tellimuses. Sammud püsiva tellimuse loomiseks:
1. Seadista kliendi ID ühenduse jaoks;
2. Määra tellimuse teema jaoks tellimuse nimi;
Ülaltoodud kombinatsioon peab olema unikaalne.
Kood rakendab püsivaid tellimusi

(1) Järjekorra kasutamisel, ehk järjekorras, on iga sõnumi kohta ainult üks tarbija, seega püsivus on väga lihtne, lihtsalt salvesta see andmebaasi

。 Seejärel saab iga tarbija selle üles korjata ja ära visata. Pole tähtis, kas tarbija lülitab selle mõneks ajaks välja.

(2) Teema kasutamisel, ehk tellimisel, võib igal sõnumil olla mitu kasutajat, mis on keerulisem.

Esiteks, eeldades, et tarbijad on tavalised tarbijad,
------------------------
Pärast <1 käivitamist> käivitati activemq, avaldati uudis 1, kuid kahjuks ei alusta praegu ühtegi tarbijat, st ükski tarbija pole tellinud. Nii et

, uudis jäeti maha.

<2> Tarbija 1 alustas, ühendas activemq-ga, tellis ja ootas sõnumit~~

activemq postitab sõnumi 2, okei, tarbija 1 võtab selle vastu ja töötleb. Sõnumi hüljamine.

<3> Consumer 2 on samuti käivitatud, ühendatud activemq-ga, tellitud ja ootab sõnumit~~

activemq avaldab sõnumi 3, OK, tarbija 1 ja tarbija 2 on kõik vastu võetud ja töödeldud. Sõnumi hüljamine.

<4> Tarbija 1 on välja lülitatud.

activemq postitab sõnumi 4, OK, tarbija 2 võtab selle vastu ja töötleb. Sõnumi hüljamine.

<5> Tarbija 1 alustas uuesti.

activemq avaldab sõnumeid 5, OK, tarbija 1 ja tarbija 2, kõik saavad ja töötlevad neid. Sõnumi hüljamine.
-----------------------------
Kokkuvõtteks:
ActiveMQ saadab lihtsalt sõnumeid praegu käivitatud tarbijale.
Tarbijad, kes lülitavad end välja, jäävad paljudest sõnumitest ilma, kuid ei saa neid enam kätte.

Kui saadetud sõnum on oluline kasutaja sünkroonimise andmed, kuid see jääb vahele, siis kasutajaandmed ei ole sünkroniseeritud.

Kuidas siis panna tarbijad saama vastamata sõnumeid, kui nad taaskäivitavad?

Vastus on püsiv tellimus.
-----------------------------

Tavalised tellimused, ilma tarbijaid eristamata, kui kohapeal on mõned pead, viskavad paar aurutatud saia.
Püsivate tellimuste puhul tuleb salvestada tarbija nimi.
Zhang San ütles: Mina olen Zhang San, mulle on aurutatud kuklid, tulen tagasi neid võtma.
Li Si ütles: Mina olen Li Si, mulle on aurutatud saiakesed, ma tulen tagasi neid võtma.
activemq kirjutas üles Zhang Sani ja Li Si nimed.

Aurutatud kukleid jagades annab üks pea ikkagi aurutatud saiakese.
Pärast jagunemist, kui ta nägi, et Zhang San ei rääkinud, tähendas see, et teda polnud seal, nii et jäta talle üks.
Li Si rääkis, nii et polnud vaja jääda.

Zhang San tuli tagasi, otsis aktiivset mq-d ja vaatas, see ei ole Zhang San, too kiiresti tema aurutatud saiakesed.
See võib olla üks aurutatud saiakes, või 100 aurutatud saiakest, see sõltub, kui palju aurutatud kukleid Zhang San on pärast mõnda aega lahkumist jaganud.

activemq eristab tarbijaid kliendiID ja tellija nime järgi.
-----------------------------
Loo side
connection = connectionFactory.createConnection();
connection.setClientID("bbb"); Püsivad tellimused nõuavad selle seadistamist.
connection.start();

Loo sessioon
Sessiooni sessioon = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

Loo sihtkoht
Teema teema = session.createTopic("userSyncTopic"); Teema nimi

MessageConsumer = session.createConsumer(teema); Tavaline tellimus
MessageConsumer = session.createDurableSubscriber (teema,"bbb"); Püsivad tellimused


Teine punkt on see, et sõnumi tootja kasutab sõnumite saatmisel püsivat režiimi
MessageProducer produtsent = ...;
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
Kui mitte, siis on see vaikimisi püsiv

(5) Kui kasutatakse sama "clientID"-d, loetakse seda sama tarbijaks. Kui kaks programmi kasutavad sama "clientID-d", saab ainult üks samaaegselt ühendada activemq-ga ning teine ühendus annab veateate.

(6) Activemq seaded on conf/activemq.xml-s ning vaikimisi sõnumid salvestatakse data/kahadb-i ning sõnumid ei kao activemq taaskäivitamisel.

Saad ligi http://localhost:8161/admin/index.jsp: vaadata infot praeguste järjekordade, teemade ja püsivate tellijate kohta, saata sõnumeid ja palju muud.

Sa saad activemq-jdbc.xml sisu kopeerida ja seda muuta ning sõnumi salvestada teistesse andmebaasidesse.




Eelmine:360 piletit haaras viienda põlvkonna VIP-kanal, mis murdus, kiiresti VIP-järjekorda sisenemine
Järgmine:. .Net platvorm
 Üürileandja| Postitatud 09.01.2017 13:41:53 |
1 Järjekorra ja teema tehniliste omaduste võrdlus
Nimi
Teema
Järjekord
Ülevaade
Avalda Telli sõnumid Avalda tellimussõnumid
Punktist punkti punktist punkti
Osariiki ei ole
Teemaandmed on vaikimisi olekuta.
Järjekorra andmed salvestatakse vaikimisi failina MQ serverisse, näiteks Active MQ salvestatakse tavaliselt $AMQ_HOME\data\kr-store\data alla. Seda saab konfigureerida ka andmebaasi salvestuseks.
Terviklikkuse garantii
Ei ole mingit garantiid, et iga kirjastaja avaldatud andmetükk aktsepteeritakse tellija poolt.
Järjekord tagab, et vastuvõtja saab vastu võtta iga andmeosa.
kas sõnum kaob
Üldiselt, kui kirjastaja avaldab sõnumi teemale, saab sõnumi vastu võtta ainult subreddit, kes kuulab teema aadressi. Kui sub ei kuulata, kaob teema ära.
Saatja saadab sõnumi sihtjärjekorda ning vastuvõtja saab selle järjekorra kaudu sõnumeid asünkroonselt vastu võtta. Järjekorras olevad sõnumid ei kao, kui pole vastuvõtjat, kes neid praegu vastu võtaks.
Sõnumi avaldamise vastuvõtupoliitika
Üks-mitmele sõnumite avaldamise ja vastuvõtmise poliitika puhul saavad mitu alamfoorumit, kes kuulavad sama teema aadressi, kirjastajalt saadetud sõnumeid. Alamfoorum saab teavituse mq serverile
Üks-ühele sõnumite avaldamise ja vastuvõtmise poliitikad, saatja saadetud sõnumeid saab vastu võtta ainult üks vastuvõtja. Pärast vastuvõtja vastuvõttu teavitab MQ serverit, et see on vastu võetud, ning MQ server kustutab või võtab järjekorras olevate sõnumite suhtes muid toiminguid.

 Üürileandja| Postitatud 09.01.2017 13:42:15 |
Suurim erinevus teema ja järjekorra vahel on see, et see teema on edastamise vormis, mis teavitab kõiki veebipõhiseid kuulamiskliente uuest sõnumist ning klient ilma jälgimiseta ei saa sõnumit vastu; Queue seevastu teavitab üht mitmest kuulamiskliendist peer-to-peer meetodil.

2 Sõnumitöötluse efektiivsuse võrdlus teema- ja järjekorrameetodite vahel
        Suurendades kuulamiskliendi samaaegsuse arvu, kontrollige, kas teema sõnumi edastamine väheneb oluliselt kuulamiskliendi samaaegsuse suurenemise tõttu.
        Mõõdetud tulemuste põhjal ei ole teemameetodi kaudu saadetud sõnumite saatmise ja vastuvõtmise efektiivsuses olulist erinevust ühe ja 100 tellija eeldusel, kuid 500 tellija (lõime) samaaegsuse eeldusel on efektiivsuse erinevus ilmne (500 lõime paralleelsuse tõttu on minu masina protsessori kasutusmäär kuni 70–90%, seega on võimatu kinnitada, kas tegemist on kohaliku testi põhjustatud jõudluspudelikaela või teemasõnumite saatmise meetodi jõudluspudelikaelaga). mis põhjustab nii märkimisväärset efektiivsuse langust).
        Teemameetodi ja järjekorra režiimi kaudu saadetud sõnumite saatmise ja vastuvõtmise efektiivsuses ei ole olulist erinevust ühe tellija ja 100 tellija eeldusel, kuid 500 abonendi samaaegsuse alusel on teemarežiimi efektiivsus oluliselt madalam kui järjekorra oma.
        Järjekorra meetodis saadetud sõnumite saatmise ja vastuvõtmise efektiivsus ei muutu oluliselt, kui eeldatakse, et tegemist on ühe tellija, 100 ja 500 abonendiga.
Teema mõõdetud andmed:


Saatja saadetud sõnumite koguarv
Kõigi tellijate poolt saadud sõnumite koguarv
Keskmine aeg, mis kulub sõnumite saatmiseks ja vastuvõtmiseks
Üksiktellija
100
100
101ms
100 tellijat
100
10000
103ms
500 tellijat
100
50000
14162ms

Järjekorra mõõdetud andmed:


Saatja saadetud sõnumite koguarv
Kõigi tellijate poolt saadud sõnumite koguarv
Keskmine aeg, mis kulub sõnumite saatmiseks ja vastuvõtmiseks
Üksiktellija
100
100
96ms
100 tellijat
100
100
96ms
500 tellijat
100
100
100ms

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