Pretože projekt potrebuje, aby sa nejaké dáta posielali a prijímali, pretože množstvo dát je relatívne veľké, približne 3 milióny dát denne
Na začiatku som používal http post na odosielanie dát, ale zistil som, že je príliš pomalý a rýchlosť odosielania je oveľa nižšia ako rýchlosť prijímania.
Preto, ak chcete použiť dlhé pripojenie socketu na odosielanie a prijímanie dát, napísať socket server a klienta sami, je to strata času, ale nemusí to byť dobre spravené
Nakoniec sa activemq používa na odosielanie a prijímanie dát
Po prvé, kód producenta je nasledovný:
Spotrebiteľ, existujú dva modely:
1: Bežné predplatné, netreba trvalé "predplatné", teda pri pripojení môžete prijímať správy a nemôžete prijímať správy pred pripojením, pomocou "CreateConsumer" 2: Trvalé predplatné, po pripojení môžete prijímať dáta, ktoré predtým neboli odoslané, pomocou "CreateDurableConsumer"
Odkazy na zavedenie CreateDurableConsumer:Prihlásenie na hypertextový odkaz je viditeľné.
Vytvorte nezdieľané trvalé predplatné na určenú tému, ak ešte neexistuje, a vytvorte spotrebiteľa na tomto trvalom predplatnom. Táto metóda vytvára trvalé predplatné bez použitia výberu správ a hodnota noLocal je nepravdivá. Aplikácia používa trvalé predplatné a musí prijímať všetky správy publikované na danú tému, vrátane správ publikovaných v prípade, že s ňou nie sú priradení žiadni aktívni spotrebitelia. Poskytovateľ JMS uchováva záznam o tomto trvalom predplatnom a zabezpečuje, že všetky správy od daného vydavateľa budú uchovávané až do ich doručenia spotrebiteľovi a potvrdenia trvalým predplatným až do ich vypršania.
Pretrvávajúce odbery pokračujú v hromadení správ, až kým nie sú vymazané metódou odhlásenia.
Táto metóda sa dá použiť iba pri nezdieľaných trvalých predplatných. Akékoľvek trvalé odbery vytvorené touto metódou zostanú nezdieľané. To znamená, že na predplatnom môže byť v danom čase len jeden aktívny (t. j. nie uzavretý) spotrebiteľ. Termín "consumer" tu označuje objekty TopicSubscriber, MessageConsumer alebo JMSConsumer v akomkoľvek klientovi.
Nezdieľané trvalé predplatné je identifikované menom špecifikovaným klientom a identifikátorom klienta, ktorý je potrebné nastaviť. Aplikácie, ktoré potom chcú vytvárať spotrebiteľov na nezdieľanom trvalom predplatnom, musia používať rovnaký identifikátor klienta.
Ak už existuje nezdieľané trvalé predplatné s rovnakým názvom a identifikátorom klienta, a rovnaká téma, výber správ a hodnota noLocal sú už špecifikované, a žiadny spotrebiteľ už nie je aktívny (t. j. nie zatvorený) na trvalom predplatnom, táto metóda vytvára existujúce trvalé predplatné na MessageConsumer.
Ak už existuje nezdieľané trvalé predplatné s rovnakým názvom a identifikátorom klienta a na trvalom predplatnom je spotrebiteľ, ktorý je už aktívny (t. j. nie uzavretý), bude vyhodená JMSException.
Ak už existuje nezdieľané trvalé predplatné s rovnakým názvom a identifikátorom klienta, ale iným subjektom, bol špecifikovaný výber správ alebo hodnota bez lokálneho a žiadny spotrebiteľ už nie je aktívny (t. j. nie uzavretý) na trvalom predplatnom, potom je to ekvivalentné odhláseniu (vymazaniu) starého a vytvoreniu nového.
Zdieľané a nezdieľané trvalé predplatné nemusia mať rovnaký názov a identitu klienta. Ak už existuje zdieľané trvalé predplatné s rovnakým názvom a identifikátorom klienta, vyhodí sa JMSException.
Neexistuje žiadny limit na trvalé a zdieľané netrvalé predplatné s rovnakým menom a clientId. Takéto predplatné bude úplne samostatné.
Táto metóda je rovnaká ako zodpovedajúca metóda createDurableSubscriber, s tým rozdielom, že namiesto TopicSubscriber vracia MessageConsumer na reprezentáciu spotrebiteľa.
Parameter: Témy - Nedočasné tematické predplatné názov - Názov použitý na identifikáciu tohto predplatného Hod: InvalidDestinationException - Ak je špecifikovaná neplatná téma. IllegalStateException - Ak identifikátor hosťa nie je nastavený JMSException - Ak relácia nevytvorí nezdieľané trvalé predplatné a MessageConsumer kvôli vnútornej chybe Ak už existuje nezdieľané trvalé predplatné s rovnakým názvom a identifikátorom klienta a spotrebiteľ je už aktívny Ak už existuje zdieľané trvalé predplatné s rovnakým názvom a identifikátorom klienta Odkiaľ: JMS 2.0 IMessageConsumer CreateDurableConsumer(ITopic destination, názov reťazca, string selector, bool noLocal);
kde messageSelector je výberom správy; Príznak noLocal je predvolene false a keď je nastavený na true, obmedzuje spotrebiteľov v prijímaní iba správ publikovaných rovnakým spojením ako oni sami, čo platí len pre témy, nie pre fronty. názov je jedinečná identita témy predplatného a tento parameter je potrebné nastaviť pri predplatnom trvalého predplatného.
Activemq .net potrebuje odkazovať na stiahnutie balíka:Prihlásenie na hypertextový odkaz je viditeľné.
Stiahnutie celého zdrojového kódu:
Turisti, ak chcete vidieť skrytý obsah tohto príspevku, prosím. Odpoveď
|