Trajne nastavitve naročnine ActiveMQ Z nastavitvijo TRAJNEGA načina dostave za založnika lahko uporabite trajne naročnine za naročnike, kar zagotavlja, da program Pub/Sub prejme vsa objavljena sporočila. Naročnine na sporočila so razdeljene na netrajne in trajne naročnine, netrajne naročnine pa lahko prejemajo sporočila, poslana temi, le, ko je odjemalec aktiven, torej ko je odjemalec brez povezave, se sporočila, poslana temi v tem obdobju, izgubijo in nikoli ne prejmejo. Ko je odjemalec brez povezave, ActiveMQ shrani vsa sporočila, poslana subjektu glede na njegov ID, in ko se odjemalec ponovno poveže z ActiveMQ, prejme vsa sporočila, poslana subjektu, ko je ta offline. Vztrajne naročnine povečujejo stroške in imajo hkrati le enega aktivnega uporabnika v trajni naročnini. Koraki za vzpostavitev trajne naročnine: 1. Nastavite ID stranke za povezavo; 2. Določite ime naročnine za temo naročnine; Zgornja kombinacija mora biti edinstvena. Koda implementira trajne naročnine
(1) Pri uporabi vrste, torej pri čakalni vrsti, je na sporočilo le en uporabnik, zato je vztrajnost zelo preprosta, preprosto ga shranite v bazo podatkov
。 Nato ga lahko vsak potrošnik prevzame in zavrže. Ni pomembno, če ga potrošnik za nekaj časa izklopi.
(2) Pri uporabi teme, torej pri naročnini, lahko ima vsako sporočilo več uporabnikov, kar je bolj problematično.
Prvič, če predpostavimo, da so potrošniki običajni potrošniki, ------------------------ Po lansiranju <1> activemq je bil objavljen News 1, vendar žal zdaj ne začenjajo nobeni potrošniki, torej se nobeni potrošniki niso naročili. Torej
, so bile novice opuščene.
<2> Uporabnik 1 se je zagnal, se povezal z activemq, se naročil in čakal na sporočilo~~
ActiveMQ objavi sporočilo 2, OK, potrošnik 1 ga prejme in obdela. Opustitev sporočila.
<3> Consumer 2 je prav tako lansiran, povezan z activemq, naročen in čaka na sporočilo~~
ActiveMQ objavi sporočilo 3, v redu, potrošnik 1, potrošnik 2 so vsi prejeti in obdelani. Opustitev sporočila.
<4> Potrošnik 1 je izklopljen.
ActiveMQ objavi sporočilo 4, OK, potrošnik 2 ga prejme in obdela. Opustitev sporočila.
<5> Potrošnik 1 se je ponovno začel.
ActiveMQ objavi sporočila 5, OK, potrošnik 1 in uporabnik 2, ki jih vsi prejmejo in obdelajo. Opustitev sporočila. ----------------------------- Za povzetek: ActiveMQ preprosto pošilja sporočila trenutno lansiranemu potrošniku. Potrošniki, ki se izklopijo, bodo zamudili veliko sporočil in jih ne bodo mogli več prejemati.
Če je poslano sporočilo pomembno za sinhronizacijo uporabniških podatkov in jih spregleda, uporabniški podatki niso sinhronizirani.
Torej, kako doseči potrošnike, da ob ponovnem zagonu prejmejo zamujena sporočila?
Odgovor je vztrajna naročnina. -----------------------------
Običajne naročnine, brez razlikovanja med potrošniki, če je v dvorani nekaj ljudi, vržejo nekaj parjenih žemljic. Za trajne naročnine morate zabeležiti ime potrošnika. Zhang San je rekel: Jaz sem Zhang San, zame so parjene žemljice, vrnil se bom po njih. Li Si je rekla: Jaz sem Li Si, zame so kuhane žemljice, vrnila se bom po njih. activemq je zapisal imeni Zhang Sana in Li Sija.
Nato, ko razdelimo parene žemljice, ena glava še vedno dobi parjeno žemljico. Po delitvi, ko je videl, da Zhang San ne govori, je to pomenilo, da ga ni bilo, zato mu je pustil eno. je spregovoril Li Si, zato ni bilo potrebe, da ostane.
Zhang San se je vrnil, iskal aktivne žemljice in pogledal, to ni Zhang San, hitro prinesi njegove parene žemljice. Lahko je ena parjena žemljica ali pa 100 parjenih žemljic, odvisno od tega, koliko parjenih žemljic je Zhang San razdelil, odkar je za nekaj časa odšel.
activemq razlikuje potrošnike po clientID in imenu naročnika. ----------------------------- Vzpostavite povezavo connection = connectionFactory.createConnection(); connection.setClientID("bbb"); Trajne naročnine zahtevajo to nastavitev. connection.start();
Ustvarite sejo Seja seje = povezava.createSession(false,Session.AUTO_ACKNOWLEDGE);
Ustvarite destinacijo Topic topic = session.createTopic("userSyncTopic"); Ime teme
MessageConsumer consumer = session.createConsumer(topic); Redna naročnina MessageConsumer consumer = session.createDurableSubscriber(tema,"bbb"); Trajne naročnine
Druga točka je, da proizvajalec sporočila uporablja trajni način pri pošiljanju sporočil MessageProducer producer = ...; producer.setDeliveryMode(DeliveryMode.PERSISTENT); Če ne, je privzeto vztrajna
(5) Če se uporablja isti "clientID", se šteje za istega potrošnika. Če dva programa uporabljata isti "clientID", se lahko na activemq hkrati poveže le eden, druga povezava pa poroča o napaki.
(6) Nastavitve activemq so v conf/activemq.xml, privzeta sporočila pa so shranjena v data/kahadb, sporočila pa se ob ponovnem zagonu activemq ne izgubijo.
Dostopate lahko http://localhost:8161/admin/index.jsp: oglejte si informacije o trenutnih vrstah, temah in trajnih naročnikih, pošiljate sporočila in še več.
Vsebino lahko kopirate v activemq-jdbc.xml in jo spremenite, sporočilo pa shranite v druge baze podatkov. |