Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 13505|Válasz: 2

ActiveMQ állandó előfizetési beállítások

[Linket másol]
Közzétéve 2017. 01. 09. 11:12:10 | | |

ActiveMQ állandó előfizetési beállítások
A kiadó PERSISTENT delivery módjának beállításával az előfizetők állandó előfizetéseket használhatsz, ami garantálja, hogy a Pub/Sub program minden közzétett üzenetet megkap.
Az üzenet-előfizetések nem tartós és tartós előfizetésekre oszlanak, és a nem tartós előfizetések csak akkor kaphatnak üzeneteket, amelyeket egy témához küldenek, ha az ügyfél aktív, vagyis amikor az ügyfél offline van, az adott témához küldött üzenetek elvesznek és soha nem kapják meg. Amikor az ügyfél offline van, az ActiveMQ elmenti az összes üzenetet, amelyet az alanynak küldött az azonosítója alapján, és amikor a kliens újra csatlakozik az ActiveMQ-hoz, akkor az összes üzenetet megkapja, amikor az offline állapotban van. A tartós előfizetések növelik a költségeket, és egyszerre csak egy aktív felhasználó van egy állandó előfizetésben. Lépések a tartós előfizetés létrehozásához:
1. Állítsd be az ügyfélazonosítót a kapcsolathoz;
2. Jelölje meg az előfizetés témájának előfizetési nevét;
A fenti kombinációnak egyedinek kell lennie.
A kód tartós előfizetéseket valósít meg

(1) Queue használatakor, vagyis sorban áll, üzenetenként csak egy felhasználó van, így a kitartás nagyon egyszerű, egyszerűen mentsd el az adatbázisba

。 Ezután bármelyik fogyasztó felveheti és eldobhatja. Nem számít, ha egy fogyasztó egy időre kikapcsolja.

(2) Téma használatakor, vagyis feliratkozáskor minden üzenetnek több felhasználója is lehet, ami még problémásabb.

Először is, feltételezve, hogy a fogyasztók hétköznapi fogyasztók,
------------------------
Az <1 elindítása után az activemq elindult> megjelent a News 1, de sajnos most már egyetlen fogyasztó sem kezd, vagyis senki sem iratkozott. Szóval

, a hírt elhagyták.

<2> Consumer 1 elindult, csatlakozott az activemq-hoz, feliratkozott, és várt egy üzenetre~~

Az activemq 2-es üzenetet küld, rendben, a fogyasztó 1 megkapja és feldolgozza azt. Üzenet elhagyása.

<3> A Consumer 2 is elindult, csatlakozott az activemq-hoz, feliratkozott, és üzenetre vár~~

Az activemq közzéteszi a 3-as üzenetet, OK, a fogyasztó 1-et, a fogyasztó 2-t mind megkapják és feldolgozták. Üzenet elhagyása.

<4> Consumer 1 ki van kapcsolva.

Az activemq 4-es üzenetet küld, rendben, a fogyasztó 2 megkapja és feldolgozza azt. Üzenet elhagyása.

<5> Consumer 1 újra elindult.

Az activemq közzéteszi az 5, OK, a fogyasztó 1 és a fogyasztó 2 üzeneteket, amelyek mind megkapják és feldolgozzák azokat. Üzenet elhagyása.
-----------------------------
Összefoglalva:
Az ActiveMQ egyszerűen üzeneteket küld a jelenleg elindított fogyasztónak.
Azok a fogyasztók, akik kikapcsolják, sok üzenetet kihagynak, és nem fogják őket újra megkapni.

Ha az üzenet fontos felhasználói szinkronizációs adat, de nem szinkronizálódik, akkor a felhasználói adatok nem szinkronizálódnak.

Hogyan lehet elérni, hogy a fogyasztók elhagyott üzeneteket kapjanak, amikor újraindítják?

A válasz a tartós előfizetés.
-----------------------------

A hétköznapi előfizetések, anélkül, hogy megkülönböztetnék a fogyasztókat, ha van néhány fej a helyszínen, dobnak pár gőzölt zsemlét.
Tartós előfizetésekhez fel kell jegyezni a fogyasztó nevét.
Zhang San azt mondta: Zhang San vagyok, van párolt zsemle nekem, visszajövök, hogy elhozzam őket.
Li Si azt mondta: Én vagyok Li Si, van párolt zsemle nekem, visszajövök értük.
az activemq feljegyezte Zhang San és Li Si nevét.

A gőzölt zsemlék elosztásakor az egyik fej még mindig gőzölt zsemle ad.
A megosztás után, amikor látta, hogy Zhang San nem szól, az azt jelentette, hogy nincs ott, szóval hagyj neki egyet.
Li Si beszélt, így nem kellett maradnia.

Zhang San visszajött, megkeresett az aktivmq-t, és megnézte: ez nem Zhang San, hozza gyorsan a gőzölt zsemléjét.
Lehet, hogy egy gőzölt zsemlé, vagy akár 100 gőzölt zsemlé, attól függ, hány gőzölt zsemlét osztott Zhang San mióta egy időre elment.

az activemq a fogyasztókat clientID és előfizető név alapján különbözteti meg.
-----------------------------
Teremts kapcsolatot
connection = connectionFactory.createConnection();
connection.setClientID("bbb"); Állandó előfizetésekhez ezt kell beállítani.
connection.start();

Hozz létre egy szekciót
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

Cél létrehozása
Topic topic = session.createTopic("userSyncTopic"); Téma neve

MessageConsumer = session.createConsumer(topic); Rendszeres előfizetés
MessageConsumer = session.createDurableSubscriber(topic,"bbb"); Állandó előfizetések


Egy másik pont, hogy az üzenet készítője állandó módot használ üzenetküldéskor
MessageProducer producer = ...;
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
Ha nem, akkor alapértelmezés szerint tartós

(5) Ha ugyanazt a "clientID"-t használják, akkor ugyanaznak a fogyasztónak tekintik. Ha két program ugyanazt a "clientID-t" használja, csak az egyik tud egyszerre csatlakozni az activemq-hoz, és a második kapcsolat hibát jelent.

(6) Az activemq beállításai conf/activemq.xml-ban vannak, az alapértelmezett üzenetek a data/kahadb formátumban vannak elmentve, és az üzenetek nem vesznek el az activemq újraindításakor.

Hozzáférhetsz http://localhost:8161/admin/index.jsp: megtekintheted az aktuális sorokat, témákat és állandó előfizetőket, üzenetküldést és még sok mást.

A activemq-jdbc.xml tartalmát másolhatod és módosíthatod, és elmentheted az üzenetet más adatbázisokban.




Előző:360-as jegyet szerező ötödik generációs VIP csatorna megrepedt, gyorsan lépj be a VIP sorba
Következő:. .Net platform
 Háziúr| Közzétéve 2017. 01. 09. 13:41:53 |
1 A sor és a téma technikai jellemzőinek összehasonlítása
név
Téma
Sor
Áttekintés
Közzététel Feliratkozás üzenet Hirdetés előfizetéses üzenetek közzététele
Ponttól pontig Ponttól pontig
Nincs állam
A téma adatai alapértelmezetten állapot nélküliek.
A sorban lévő adatokat alapértelmezés szerint fájlként mentik el az MQ szerveren, például az Active MQ általában a $AMQ_HOME\data\kr-store\data alatt tárolódik. Konfigurálható adatbázis-tárolóként is.
Integritás garancia
Nincs garancia arra, hogy a kiadó által közzétett minden adat elfogadásra kerül az előfizető.
A sor garantálja, hogy minden adatdarabot a vevő fogadhat.
hogy az üzenet elveszik-e
Általánosságban elmondható, amikor egy kiadó egy témához ír üzenetet, csak az a sub, amely a téma címét hallgatja, kaphatja meg az üzenetet. Ha nincs aloldali hallgató, a téma elveszik.
A feladó üzenetet küld a cél Queue-hoz, és a vevő aszinkron módon fogadhatja az üzeneteket ezen a Queue-n. A sorban lévő üzenetek nem vesznek el, ha egyelőre nincs címadó, aki átveszi őket.
Üzenet kiküldési és fogadási szabályzat
Az egy-többre üzenetküldési és fogadási szabályzat esetén több aloldal is meghallgatja ugyanazt a témacímet, és a kiadó által küldött üzeneteket is megkaphatja. A sub értesítést kap az MQ szervernek
Az egy-egy üzenetküldési és fogadási szabályzatok, amelyeket a feladó küldött üzenetek csak egy vevő kaphat. Miután a vevő átvette, az MQ szerver értesíti az MQ szervert a fogadásról, és az MQ szerver törli vagy más lépéseket tesz a sorban lévő üzenetekre.

 Háziúr| Közzétéve 2017. 01. 09. 13:42:15 |
A legnagyobb különbség a téma és a sor között, hogy a téma sugárzás formájában jelenik meg, amely értesíti az összes online hallgató klienst új üzenetről, és a megfigyelés nélküli kliens nem kapja meg az üzenetet; A Queue ezzel szemben peer-to-peer módon értesíti az egyik több hallgató klienst is.

2 Az üzenetfeldolgozás hatékonyságának összehasonlítása a téma és a sorban álló módszerek között
        A hallgató kliens egyidejű számának növelésével ellenőrizzük, hogy a téma üzenet nyomódása jelentősen csökken-e a hallgató kliens egyidejű növekedése miatt.
        A mért eredmények alapján nincs jelentős különbség a téma módszerrel küldött üzenetek küldésének és fogadásának hatékonysága között egy előfizető és 100 előfizető alapjaival, de az 500 előfizető (szál) egyidejű feltevése mellett a hatékonyságkülönbség nyilvánvaló (az 500 szál egyidejű használata miatt a gépem CPU-használati aránya akár 70-90% is elérhető, így lehetetlen megerősíteni, hogy a helyi tesztem okozta teljesítményszűk keresztmetszet, vagy a téma üzenetküldési módszer teljesítményszűk keresztmetszete-e, ami jelentős hatékonyságcsökkenést eredményezett).
        Nincs jelentős különbség az üzenetküldés és fogadás hatékonysága között témamódszerrel és sorban móddal, egy előfizető és 100 előfizető alapjája alapján, de 500 előfizető egyidejű feltevése mellett a téma mód hatékonysága jelentősen alacsonyabb, mint a sorban.
        A Queue módszerrel küldött üzenetek küldésének és fogadásának hatékonysága nem változik jelentősen egy előfizető, 100 és 500 előfizető alapja alapján.
Téma mérési adatok:


A küldő által küldött üzenetek teljes száma
Az összes előfizető által kapott üzenetek összesített száma
Az üzenetküldés és fogadás átlagos időtartama
Egyetlen előfizető
100
100
101ms
100 előfizető
100
10000
103ms
500 előfizető
100
50000
14162ms

Sorban mért adatok:


A küldő által küldött üzenetek teljes száma
Az összes előfizető által kapott üzenetek összesített száma
Az üzenetküldés és fogadás átlagos időtartama
Egyetlen előfizető
100
100
96ms
100 előfizető
100
100
96ms
500 előfizető
100
100
100ms

Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com