Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 13505|Odpoveď: 2

Nastavenia trvalého predplatného ActiveMQ

[Kopírovať odkaz]
Zverejnené 9. 1. 2017 11:12:10 | | |

Nastavenia trvalého predplatného ActiveMQ
Nastavením režimu PERSISTENTNÉHO doručovania pre vydavateľa môžete použiť trvalé predplatné pre odberateľov, čo zaručuje, že program Pub/Sub prijíma všetky publikované správy.
Odbery správ sa delia na netrvalé a trvalé predplatné, pričom netrvalé odbery môžu prijímať správy zaslané téme len vtedy, keď je klient aktívny, teda keď je klient offline, správy zaslané téme počas tohto obdobia sa stratia a nikdy nebudú prijaté. Keď je klient offline, ActiveMQ uloží všetky správy odoslané subjektu podľa jeho ID a keď sa klient opäť pripojí k ActiveMQ, dostane všetky správy odoslané subjektu, keď je offline. Pretrvávajúce predplatné zvyšujú režijné náklady a majú v jednom trvalom predplatnom naraz len jedného aktívneho používateľa. Kroky na vytvorenie trvalého predplatného:
1. Nastaviť zákaznícke ID pre spojenie;
2. Špecifikovať názov predplatného pre tému predplatného;
Vyššie uvedená kombinácia musí byť jedinečná.
Kód implementuje trvalé predplatné

(1) Pri používaní fronty, teda pri frontovaní, je na správu len jeden spotrebiteľ, takže perzistencia je veľmi jednoduchá, stačí ju uložiť do databázy

。 Potom si ho môže ktorýkoľvek spotrebiteľ vyzdvihnúť a zlikvidovať. Nezáleží na tom, či ho spotrebiteľ na chvíľu vypne.

(2) Pri použití témy, teda pri odbere, môže mať každá správa viacerých spotrebiteľov, čo je problematickejšie.

Po prvé, za predpokladu, že spotrebitelia sú bežní spotrebitelia,
------------------------
Po spustení <1> activemq bol zverejnený News 1, ale žiaľ, žiadni spotrebitelia teraz nezačínajú, teda žiadni spotrebitelia sa neprihlásili na odber. Takže

, správy boli opustené.

<2> Používateľ 1 sa spustil, pripojil sa na activemq, prihlásil sa na odber a čakal na správu~~

ActiveMQ zverejní správu 2, OK, spotrebiteľ 1 ju prijíma a spracováva. Opustenie správy.

<3> Consumer 2 je tiež spustený, pripojený k activemq, prihlásený na odber a čaká na správu~~

ActiveMQ zverejňuje správu 3, OK, spotrebiteľ 1, spotrebiteľ 2 sú všetky prijaté a spracované. Opustenie správy.

<4> Spotrebiteľ 1 je vypnutý.

ActiveMQ zverejní správu 4, OK, spotrebiteľ 2 ju prijme a spracuje. Opustenie správy.

<5> Spotrebiteľ 1 začal znova.

ActiveMQ zverejňuje správy 5, OK, spotrebiteľ 1 a spotrebiteľ 2 ich všetky prijímajú a spracovávajú. Opustenie správy.
-----------------------------
Na záver:
ActiveMQ jednoducho posiela správy aktuálne spustenému spotrebiteľovi.
Spotrebitelia, ktorí sa vypnú, zmeškajú veľa správ a už ich nebudú môcť prijímať.

Ak odoslaná správa obsahuje dôležité údaje o synchronizácii používateľa a prehliadne ich, používateľské dáta nie sú synchronizované.

Ako teda zabezpečiť, aby spotrebitelia dostávali zmeškané správy po reštarte?

Odpoveďou je trvalé predplatné.
-----------------------------

Bežné predplatné, bez rozlišovania medzi spotrebiteľmi, ak je v podniku niekoľko hláv, pridajú pár parených bucht.
Pri trvalých predplatných je potrebné zaznamenať meno spotrebiteľa.
Zhang San povedal, že som Zhang San, mám dusené buchty, vrátim sa po ne.
Li Si povedala: Som Li Si, sú tu pre mňa dusené buchty, vrátim sa po ne.
activemq zapísal mená Zhang Sana a Li Siho.

Potom, keď rozdeľujete parené buchty, jedna hlava stále dáva dusenú žemľu.
Po rozdelení, keď videl, že Zhang San nehovorí, znamenalo to, že tam nie je, tak mu nechaj jednu.
Li Si prehovoril, takže nebolo dôvod zostať.

Zhang San sa vrátil, hľadal aktívne a pozrel sa, toto nie je Zhang San, rýchlo prines jeho parené buchty.
Môže to byť jedna parená žemľa, alebo 100 dusených žemlí, záleží na tom, koľko dusených žemlí Zhang San rozdelil odvtedy, čo na chvíľu odišiel.

activemq rozlišuje spotrebiteľov podľa clientID a mena odberateľa.
-----------------------------
Vytvorte spojenie
connection = connectionFactory.createConnection();
connection.setClientID("bbb"); Pretrvávajúce predplatné vyžadujú toto nastavenie.
connection.start();

Vytvorte reláciu
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

Vytvorte si cieľ
Topic topic = session.createTopic("userSyncTopic"); Názov témy

MessageConsumer consumer = session.createConsumer(topic); Pravidelné predplatné
MessageConsumer consumer = session.createDurableSubscriber(téma, "bbb"); Trvalé predplatné


Ďalším bodom je, že producent správy používa perzistentný režim pri odosielaní správ
MessageProducer producer = ...;
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
Ak nie, je to štandardne trvalé

(5) Ak sa použije rovnaké "clientID", považuje sa to za toho istého spotrebiteľa. Ak dva programy používajú rovnaké "clientID", len jeden sa môže pripojiť k activemq súčasne a druhé pripojenie nahlási chybu.

(6) Nastavenia activemq sú v conf/activemq.xml a predvolené správy sú uložené v data/kahadb, pričom správy sa nestratia pri reštarte activemq.

Môžete pristupovať http://localhost:8161/admin/index.jsp: zobraziť informácie o aktuálnych frontách, témach a trvalých odberateľoch, posielať správy a ďalšie.

Obsah môžete skopírovať v activemq-jdbc.xml a upraviť ho a správu uložiť do iných databáz.




Predchádzajúci:Piata generácia VIP kanála na 360 vstupenky praskla, rýchlo vstúpte do VIP radu
Budúci:. .Net platforma
 Prenajímateľ| Zverejnené 9. 1. 2017 13:41:53 |
1 Porovnanie technických charakteristík fronty a témy
meno
Téma
Queue
Prehľad
Zverejniť Prihlásiť sa na odber správy Zverejniť správy o predplatnom
Bod-bod-bod Bod-bod
Neexistuje žiadny štát
Dáta tém sú predvolene bezstavové.
Dáta z fronty sa predvolene ukladajú ako súbor na MQ serveri, napríklad Active MQ je zvyčajne uložený pod $AMQ_HOME\data\kr-store\data. Môže byť tiež nakonfigurovaný ako databázové úložisko.
Záruka integrity
Nie je zaručené, že každý údaj zverejnený vydavateľom bude akceptovaný predplatiteľom.
Queue zaručuje, že prijímateľ môže prijať každý údaj.
či sa správa stratí
Vo všeobecnosti, keď vydavateľ zverejní správu k téme, správu môže prijať iba subreddit, ktorý počúva tému. Ak nepočúva žiadny subreddit, téma sa stráca.
Odosielateľ odošle správu cieľovej fronte a prijímateľ môže prijímať správy v tejto fronte asynchrónne. Správy vo fronte sa nestratia, ak ich momentálne nebude prijímať.
Politika prijatia správy
Politika publikovania a prijímania správ jeden ku viacerým – viacerí odberatelia počúvajúci tú istú tému môžu prijímať správy od vydavateľa. Sub dostane notifikáciu na mq server
Pravidlá publikovania a prijímania správ jeden na jedného, správy odoslané odosielateľom môžu byť prijaté iba jedným prijímateľom. Po prijatí prijímateľom MQ server informuje MQ server o prijatí a MQ server vymaže alebo vykoná iné akcie na správach vo fronte.

 Prenajímateľ| Zverejnené 9. 1. 2017 13:42:15 |
Najväčší rozdiel medzi témou a frontou je, že téma má formu vysielania, ktoré upozorňuje všetkých online poslucháčov na novú správu, a klient bez monitorovania správu nedostane; Queue naopak upozorňuje jedného z viacerých posluchujúcich klientov peer-to-peer.

2 Porovnanie efektivity spracovania správ medzi metódami témy a fronty
        Zvýšením počtu súbežnosti poslucháceho klienta overíte, či sa push správy témy výrazne zníži v dôsledku zvýšenia súbežnosti poslucháceho klienta.
        Z meraných výsledkov nie je významný rozdiel v efektivite odosielania a prijímania správ metódou témy za predpokladu jedného a 100 odberateľov, ale pri predpoklade súbežnosti 500 odberateľov (vlákien) je rozdiel v efektivite zrejmý (kvôli súbežnosti 500 vlákien je využitie CPU môjho stroja až 70-90 %, takže nie je možné potvrdiť, či ide o úzke hrdlo výkonu spôsobené mojím lokálnym testom, alebo o úzke hrdlo výkonu v metóde odosielania správ na tému, čo vedie k výraznému zníženiu efektivity).
        Pri predpoklade jedného odberateľa a 100 účastníkov nie je významný rozdiel v efektivite odosielania a prijímania správ metódou témy a režimom fronty, ale pri predpoklade súbežnosti 500 odberateľov je efektívnosť režimu témy výrazne nižšia ako pri fronte.
        Efektivita odosielania a prijímania správ v metóde Queue sa pri predpoklade jedného odberateľa, 100 a 500 odberateľov výrazne nemení.
Téma merané údaje:


Celkový počet správ odoslaných odosielateľom
Celkový počet správ prijatých všetkými odberateľmi
Priemerný čas potrebný na odoslanie a prijatie správ
Jeden predplatiteľ
100
100
101 ms
100 predplatiteľov
100
10000
103 ms
500 predplatiteľov
100
50000
14162 ms

Údaje merané vo fronte:


Celkový počet správ odoslaných odosielateľom
Celkový počet správ prijatých všetkými odberateľmi
Priemerný čas potrebný na odoslanie a prijatie správ
Jeden predplatiteľ
100
100
96ms
100 predplatiteľov
100
100
96ms
500 predplatiteľov
100
100
100 ms

Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com