Protože projekt potřebuje posílat a přijímat nějaká data, protože množství dat je relativně velké, asi 3 miliony dat denně
Na začátku jsem používal http post k odesílání dat, ale zjistil jsem, že je to příliš pomalé a rychlost odesílání je mnohem menší než rychlost přijímání.
Proto pokud chcete použít dlouhé socketové připojení k odesílání a přijímání dat, napsat socket server a klienta sami, je to ztráta času, ale nemusí to být dobře provedeno
Nakonec se activemq používá k odesílání a přijímání dat
Za prvé, kód producenta je následující:
Spotřebitelé, existují dva modely:
1: Běžné předplatné, není potřeba trvalé "předplatné", tedy při připojení můžete přijímat zprávy a nemůžete přijímat zprávy před připojením, pomocí "CreateConsumer" 2: Trvalé předplatné, po připojení můžete přijímat data, která předtím nebyla odeslána, pomocí "CreateDurableConsumer"
Odkazy na představení CreateDurableConsumer:Přihlášení k hypertextovému odkazu je viditelné.
Vytvořte nesdílené trvalé předplatné na dané téma, pokud ještě neexistuje, a vytvořte spotřebitele na tomto trvalém odběru. Tato metoda vytváří trvalé předplatné bez použití výběru zpráv a hodnota noLocal je nepravdivá. Aplikace používá trvalé předplatné a musí přijímat všechny zprávy publikované na dané téma, včetně zpráv publikovaných v případech, kdy s ní nejsou spojeni žádní aktivní spotřebitelé. Poskytovatel JMS uchovává záznam o tomto trvalém předplatném a zajišťuje, že všechny zprávy od daného vydavatele budou uchovávány až do doručení spotřebiteli a potvrzeny tímto trvalým předplatným až do jejich vypršení.
Trvalá odběrová zařízení pokračují ve hromadění zpráv, dokud nejsou smazána pomocí metody odhlášení.
Tato metoda může být použita pouze u nesdílených trvalých odběrů. Jakékoliv trvalé odběry vytvořené touto metodou zůstanou nesdílené. To znamená, že na předplatném může být v daném okamžiku pouze jeden aktivní (tj. ne uzavřený) spotřebitel. Termín "consumer" zde označuje objekt TopicSubscriber, MessageConsumer nebo JMSConsumer v jakémkoli klientovi.
Nesdílené trvalé předplatné je identifikováno jménem specifikovaným klientem a identifikátorem klienta, který je třeba nastavit. Aplikace, které pak chtějí vytvářet spotřebitele na nesdíleném trvalém předplatném, musí používat stejný identifikátor klienta.
Pokud již existuje nesdílené trvalé předplatné se stejným názvem a identifikátorem klienta, a stejné téma, výběr zpráv a hodnota noLocal jsou již specifikovány a žádný spotřebitel již není aktivní (tj. není uzavřen) na trvalém předplatném, tato metoda vytváří existující trvalé předplatné na MessageConsumer.
Pokud již existuje nesdílené trvalé předplatné se stejným názvem a identifikátorem klienta a na trvalém předplatném je spotřebitel, který je již aktivní (tj. není uzavřen), bude vyhozena JMSException.
Pokud již existuje nesdílené trvalé předplatné se stejným jménem a identifikátorem klienta, ale s jiným subjektem, byl specifikován výběr zpráv nebo hodnota bez lokálního a žádný spotřebitel již není aktivní (tj. není uzavřen) na trvalém odběru, pak je to ekvivalentní odhlášení (smazání) starého a vytvoření nového.
Sdílená i nesdílená trvalá odběratelská nemusí mít stejný název a identitu klienta. Pokud již existuje sdílené trvalé předplatné se stejným názvem a identifikátorem klienta, je vyhodena JMSException.
Neexistuje žádné omezení na trvalá a sdílená netrvalá odběratelství se stejným jménem a clientId. Takové předplatné bude zcela oddělené.
Tato metoda je stejná jako odpovídající metoda createDurableSubscriber, s tím rozdílem, že vrací MessageConsumer místo TopicSubscriber, který reprezentuje spotřebitele.
Parametr: Témata - Nedočasné tematické předplatné název - Název použitý k identifikaci tohoto předplatného Hod: InvalidDestinationException – Pokud je uvedeno neplatné téma. IllegalStateException - Pokud není nastaven identifikátor hosta JMSException - Pokud relace nedokáže vytvořit nesdílené trvalé předplatné a MessageConsumer kvůli nějaké interní chybě Pokud již existuje nesdílené trvalé předplatné se stejným jménem a identifikátorem klienta a spotřebitel je již aktivní Pokud již existuje sdílené trvalé předplatné se stejným názvem a identifikátorem klienta Protože: JMS 2.0 IMessageConsumer CreateDurableConsumer(ITopic destination, string name, string selector, bool noLocal);
kde messageSelector je výběrem zpráv; Příznak noLocal je ve výchozím nastavení false a když je nastaven na true, omezuje spotřebitele v přijímání pouze zpráv publikovaných stejným spojením jako oni sami, což platí pouze pro témata, nikoli pro fronty. Název je jedinečná identita tématu předplatného a tento parametr je třeba nastavit při odběru trvalého předplatného.
Activemq .net potřebuje odkazovat na stažení balíčku:Přihlášení k hypertextovému odkazu je viditelné.
Stažení kompletního zdrojového kódu:
Turisté, pokud chcete vidět skrytý obsah tohoto příspěvku, prosím Odpověď
|