Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 13505|Odpověď: 2

Trvalá nastavení předplatného ActiveMQ

[Kopírovat odkaz]
Zveřejněno 09.01.2017 11:12:10 | | |

Trvalá nastavení předplatného ActiveMQ
Nastavením režimu PERSISTENTNÍHO doručování pro vydavatele můžete použít trvalé předplatné pro předplatitele, což zaručuje, že program Pub/Sub přijme všechny publikované zprávy.
Odběry zpráv se dělí na netrvalé a trvalé odběry, přičemž netrvalé odběry mohou přijímat zprávy odeslané tématu pouze tehdy, když je klient aktivní, tedy když je klient offline, zprávy odeslané tématu během tohoto období budou ztraceny a nikdy nepřijaty. Když je klient offline, ActiveMQ uloží všechny zprávy odeslané subjektu podle jeho ID a když se klient znovu připojí k ActiveMQ, obdrží všechny zprávy odeslané subjektu, když je offline. Trvalá předplatné zvyšuje režijní zátěž a má v jednom trvalém předplatném pouze jednoho aktivního uživatele najednou. Kroky k vytvoření trvalého předplatného:
1. Nastavte zákaznické ID pro připojení;
2. Specifikovat název předplatného pro téma předplatného;
Výše uvedená kombinace musí být jedinečná.
Kód implementuje trvalé předplatné

(1) Při použití fronty, tedy při frontě, je na jednu zprávu pouze jeden spotřebitel, takže perzistence je velmi jednoduchá, stačí ji uložit do databáze

。 Pak si ji může každý zákazník vyzvednout a zlikvidovat. Nezáleží na tom, jestli ho spotřebitel na chvíli vypne.

(2) Při použití tématu, tedy při odběru, může mít každá zpráva více uživatelů, což je problematickější.

Za prvé, za předpokladu, že spotřebitelé jsou běžní spotřebitelé,
------------------------
Po spuštění <1> activemq byla zveřejněna novinka 1, ale bohužel nyní žádní spotřebitelé nezačínají, tedy žádní spotřebitelé se nepřihlásili k odběru. Takže

, zprávy byly opuštěny.

<2> Spotřebitel 1 se spustil, připojil se k activemq, přihlásil se k odběru a čekal na zprávu~~

ActiveMQ zveřejní zprávu 2, OK, spotřebitel 1 ji přijme a zpracuje. Opuštění zprávy.

<3> Consumer 2 je také spuštěn, připojil se k activemq, přihlásil se k odběru a čeká na zprávu~~

ActiveMQ zveřejňuje zprávu 3, OK, spotřebitel 1, spotřebitel 2 jsou všechny přijaty a zpracovány. Opuštění zprávy.

<4> Spotřebitel 1 je vypnutý.

ActiveMQ zveřejní zprávu 4, OK, spotřebitel 2 ji přijme a zpracuje. Opuštění zprávy.

<5> Spotřebitel 1 začal znovu.

ActiveMQ zveřejňuje zprávy 5, OK, spotřebitel 1 a spotřebitel 2, které všechny přijímají a zpracovávají. Opuštění zprávy.
-----------------------------
Shrnuto:
ActiveMQ jednoduše odesílá zprávy aktuálně spuštěnému spotřebiteli.
Spotřebitelé, kteří se odpojí, přijdou o mnoho zpráv a už je nebudou moci znovu přijímat.

Pokud je odeslaná zpráva důležitá pro synchronizaci uživatele a chybí ji, uživatelská data nejsou synchronizována.

Jak tedy přimět spotřebitele, aby při restartu dostávali zmeškané zprávy?

Odpovědí je trvalé předplatné.
-----------------------------

Běžní předplatní, bez rozlišování mezi spotřebiteli, pokud je v klubu pár lidí, přidávají pár dušených bulek.
U trvalých odběrů je potřeba zaznamenat jméno spotřebitele.
Zhang San řekl: Jsem Zhang San, mám dušené housky, vrátím se pro ně.
Li Si řekla: Jsem Li Si, mám dušené bulky, vrátím se pro ně.
activemq zapsal jména Zhang Sana a Li Siho.

Pak, když se dělí dušené buchty, jedna hlava stále dává dušenou housku.
Po rozdělení, když viděl, že Zhang San nemluví, znamenalo to, že tam není, tak mu nech jedno.
Li Si promluvil, takže nebylo třeba zůstávat.

Zhang San se vrátil, hledal aktivní a podíval se, tohle není Zhang San, rychle přines jeho dušené housky.
Může to být jedna dušená houska, nebo 100 dušených housek, záleží na tom, kolik dušených housek Zhang San rozdělil od doby, co na nějakou dobu odešel.

activemq rozlišuje spotřebitele podle clientID a jména odběratele.
-----------------------------
Vytvořte spojení
connection = connectionFactory.createConnection();
connection.setClientID("bbb"); Trvalé předplatné vyžaduje nastavit to.
connection.start();

Vytvořte si sezení
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

Vytvořte cíl
Topic = session.createTopic("userSyncTopic"); Název tématu

MessageConsumer consumer = session.createConsumer(topic); Pravidelné předplatné
MessageConsumer consumer = session.createDurableSubscriber(topic,"bbb"); Trvalé předplatné


Dalším bodem je, že producent zprávy používá při odesílání zpráv perzistentní režim
MessageProducer producer = ...;
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
Pokud ne, je to ve výchozím nastavení persistentní

(5) Pokud je použito stejné "clientID", považuje se za stejného spotřebitele. Pokud dva programy používají stejné "clientID", může se současně připojit k activemq pouze jeden a druhé připojení hlásí chybu.

(6) Nastavení activemq jsou v conf/activemq.xml a výchozí zprávy jsou uloženy v data/kahadb, a zprávy se neztratí při restartu activemq.

Můžete přistupovat http://localhost:8161/admin/index.jsp: zobrazit informace o aktuálních frontách, tématech a trvalých odběratelích, posílat zprávy a další.

Obsah můžete zkopírovat v activemq-jdbc.xml a upravit ho, a zprávu uložit do jiných databází.




Předchozí:Pátá generace VIP kanálu pro získání vstupenek na 360 je prasklý, rychle vstupte do VIP fronty
Další:. .Net platforma
 Pronajímatel| Zveřejněno 09.01.2017 13:41:53 |
1 Porovnání technických charakteristik fronty a tématu
Jméno
Téma
Fronta
Přehled
Publikovat Odebírat zprávy Publikovat zprávy o odběru
Point-to-Point Point-to-Point
Neexistuje žádný stát
Data témat jsou ve výchozím stavu bezstavová.
Data fronty jsou ve výchozím nastavení uložena jako soubor na MQ serveru, například aktivní MQ je obvykle uložen pod $AMQ_HOME\data\kr-store\data. Může být také nakonfigurován jako databázové úložiště.
Záruka integrity
Není zaručeno, že každé údaje zveřejněné vydavatelem bude předplatitelem přijato.
Fronta zaručuje, že každý kus dat může být přijat příjemcem.
zda se zpráva ztratí
Obecně platí, že když vydavatel zveřejní zprávu k tématu, zprávu může přijmout pouze subreddit, který poslouchá téma. Pokud žádný sub neposlechne, téma je ztraceno.
Odesílatel odešle zprávu cílové frontě a příjemce může zprávy na této frontě přijímat asynchronně. Zprávy ve frontě se neztratí, pokud je zatím nebude příjemce, který by je mohl vyzvednout.
Pravidla přijetí zprávy
Politika publikování a přijímání zpráv jedna na více – více odběratelů poslouchajících stejnou adresu tématu může přijímat zprávy zaslané vydavatelem. Subreddit přijímá oznámení na mq server
Zásady publikace a přijímání zpráv jeden na jednoho, zprávy odeslané odesílatelem může přijímat pouze jeden příjemce. Po přijetí příjemcem MQ server oznámí MQ serveru o přijetí a MQ server smaže nebo provede jiné akce se zprávami ve frontě.

 Pronajímatel| Zveřejněno 09.01.2017 13:42:15 |
Největší rozdíl mezi tématem a frontou je ten, že téma má formu vysílání, kdy všichni online naslouchaní klienti informují o nové zprávě, a klient bez monitorování tuto zprávu neobdrží; Fronta naopak informuje jednoho z více naslouchajících klientů peer-to-peer.

2 Porovnání efektivity zpracování zpráv mezi metodami tématu a fronty
        Zvýšením počtu souběžnosti naslouchajícího klienta ověřujete, zda se message push tématu výrazně sníží v důsledku zvýšení souběžnosti naslouchajícího klienta.
        Z měřených výsledků není významný rozdíl v efektivitě odesílání a přijímání zpráv odesílaných metodou topic za předpokladu jednoho a 100 odběratelů, ale při předpokladu souběžnosti 500 odběratelů (vláken) je rozdíl v efektivitě zřejmý (díky souběžnosti 500 vláken je rychlost využití CPU mého stroje až 70–90 %, takže není možné potvrdit, zda jde o omezení výkonu způsobené mým lokálním testem, nebo o omezení výkonu v metodě odesílání zpráv topic). což vede k výraznému snížení účinnosti).
        Neexistuje významný rozdíl v efektivitě odesílání a přijímání zpráv metodou tématu a režimem fronty při předpokladu jednoho a 100 odběratelů, ale při předpokladu souběžnosti 500 předplatitelů je efektivita režimu tématu výrazně nižší než u fronty.
        Efektivita odesílání a přijímání zpráv zasílaných metodou fronty se při předpokladu jednoho odběratele, 100 a 500 předplatitelů se výrazně nemění.
Měření témat:


Celkový počet zpráv odeslaných odesílatelem
Celkový počet zpráv přijatých všemi odběrateli
Průměrná doba potřebná k odeslání a přijetí zpráv
Jeden odběratel
100
100
101ms
100 předplatitelů
100
10000
103ms
500 předplatitelů
100
50000
14162 ms

Data měřená frontou:


Celkový počet zpráv odeslaných odesílatelem
Celkový počet zpráv přijatých všemi odběrateli
Průměrná doba potřebná k odeslání a přijetí zpráv
Jeden odběratel
100
100
96ms
100 předplatitelů
100
100
96ms
500 předplatitelů
100
100
100 ms

Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com