Kadangi projektui reikia tam tikrų duomenų, kuriuos reikia stumti ir gauti, nes duomenų kiekis yra palyginti didelis, apie 3 milijonus duomenų per dieną
Iš pradžių duomenims pateikti naudojau http postą, tačiau pastebėjau, kad jis buvo per lėtas, o siuntimo greitis buvo daug mažesnis nei gavimo greitis.
Todėl, jei norite naudoti ilgą lizdo jungtį duomenims stumti ir gauti, patys parašykite lizdo serverį ir klientą, tai yra laiko švaistymas, tačiau tai gali būti padaryta negerai
Galiausiai, activemq naudojamas duomenims stumti ir gauti
Pirma, gamintojo kodas yra toks:
Vartotojas, yra du modeliai:
1: Įprasta prenumerata, nereikia nuolatinės "prenumeratos", tai yra, prisijungdami galite gauti pranešimus ir negalite gauti pranešimų prieš prisijungdami, naudodami "CreateConsumer" 2: Nuolatinė prenumerata, prisijungę galite gauti duomenis, kurie anksčiau nebuvo stumti, naudodami "CreateDurableConsumer"
Nuorodos į "CreateDurableConsumer" pristatymą:Hipersaito prisijungimas matomas.
Sukurkite nebendrinamą nuolatinę prenumeratą nurodyta tema, jei jos dar nėra, ir sukurkite vartotoją toje nuolatinėje prenumeratoje. Šis metodas sukuria nuolatinę prenumeratą nenaudojant pranešimų parinkiklio, o noLocal reikšmė yra klaidinga. Programa naudoja nuolatinę prenumeratą, o programa turi gauti visus pranešimus, paskelbtus šia tema, įskaitant pranešimus, paskelbtus, kai nėra su ja susijusių aktyvių vartotojų. JMS teikėjas saugo šios nuolatinės prenumeratos įrašus ir užtikrina, kad visi pranešimai iš atitinkamo leidėjo bus saugomi tol, kol jie bus pristatyti vartotojui ir patvirtinti ta nuolatine prenumerata, kol baigsis jų galiojimo laikas.
Nuolatinės prenumeratos ir toliau kaupia pranešimus, kol jie ištrinami naudojant prenumeratos atsisakymo metodą.
Šį metodą galima naudoti tik su nebendrinamomis nuolatinėmis prenumeratomis. Visos nuolatinės prenumeratos, sukurtos naudojant šį metodą, bus atšauktos. Tai reiškia, kad vienu metu prenumeratoje gali būti tik vienas aktyvus (t. y. ne uždaras) vartotojas. Terminas "vartotojas" čia reiškia bet kurio kliento objektą "TopicSubscriber", "MessageConsumer" arba "JMSConsumer".
Nebendrinama nuolatinė prenumerata identifikuojama pagal kliento nurodytą pavadinimą ir kliento identifikatorių, kurį reikia nustatyti. Programos, kurios nori sukurti vartotojus su nebendrinama nuolatine prenumerata, turi naudoti tą patį kliento identifikatorių.
Jei jau yra nebendrinama nuolatinė prenumerata tuo pačiu pavadinimu ir kliento identifikatoriumi, o ta pati tema, pranešimo parinkiklis ir noLocal reikšmė jau nurodyti, o nė vienas vartotojas nėra aktyvus (t. y. neuždarytas) nuolatinėje prenumeratoje, šis metodas sukuria esamą ilgalaikę prenumeratą MessageConsumer.
Jei jau yra nebendrinama nuolatinė prenumerata tuo pačiu pavadinimu ir kliento identifikatoriumi, o nuolatinėje prenumeratoje yra vartotojas, kuris jau yra aktyvus (t. y. neuždarytas), bus pateikta JMSException.
Jei jau yra nebendrinama nuolatinė prenumerata su tuo pačiu pavadinimu ir kliento identifikatoriumi, bet kita tema, pranešimo parinkiklis arba noLocal reikšmė buvo nurodyta, o nė vienas vartotojas jau nėra aktyvus (t. y. neuždarytas) nuolatinėje prenumeratoje, tai prilygsta senosios prenumeratos atšaukimui (ištrynimui) ir naujos sukūrimui.
Bendrinamos ir nebendrinamos nuolatinės prenumeratos gali neturėti to paties pavadinimo ir kliento tapatybės. Jei bendrai naudojama nuolatinė prenumerata tuo pačiu pavadinimu ir kliento identifikatoriumi jau yra, pateikiama JMSException.
Nuolatinių prenumeratų ir bendrinamų nenuolatinių prenumeratų su tuo pačiu pavadinimu ir clientID neribojama. Tokia prenumerata bus visiškai atskira.
Šis metodas yra toks pat kaip ir atitinkamas createDurableSubscriber metodas, išskyrus tai, kad jis pateikia MessageConsumer, o ne TopicSubscriber, kad atstovautų vartotojui.
Parametras: Temos – nelaikinos temų prenumeratos pavadinimas – pavadinimas, naudojamas šiai prenumeratai identifikuoti Mesti: InvalidDestinationException – jei nurodyta netinkama tema. IllegalStateException – jei svečio identifikatorius nenustatytas JMSException - Jei seansui nepavyksta sukurti nebendrinamos nuolatinės prenumeratos ir "MessageConsumer" dėl kokios nors vidinės klaidos Jei jau yra nebendrinama nuolatinė prenumerata tuo pačiu pavadinimu ir kliento identifikatoriumi, o vartotojas jau yra aktyvus Jei jau yra bendrai naudojama nuolatinė prenumerata tuo pačiu pavadinimu ir kliento identifikatoriumi Nuo: JMS 2.0 IMessageConsumer CreateDurableConsumer(ITopic paskirtis, eilutės pavadinimas, eilutės parinkiklis, bool noLocal);
kur messageSelector yra pranešimų parinkiklis; Pagal numatytuosius nustatymus vėliavėlė noLocal yra klaidinga, o nustačius teisingą reikšmę, vartotojai negali gauti tik tuo pačiu ryšiu paskelbtų pranešimų, o tai taikoma tik temoms, o ne eilėms. Pavadinimas yra unikali prenumeratos temos tapatybė, todėl šį parametrą reikia nustatyti, kai užsiprenumeruojate nuolatinę prenumeratą.
Activemq .net reikia nurodyti paketo atsisiuntimą:Hipersaito prisijungimas matomas.
Visas šaltinio kodo atsisiuntimas:
Turistai, jei norite pamatyti paslėptą šio įrašo turinį, prašome Atsakyti
|