Ponieważ projekt potrzebuje przesyłania i odbioru pewnych danych, a ilość danych jest stosunkowo duża – około 3 milionów danych dziennie
Na początku używałem HTTP Post do przesyłania danych, ale okazało się, że jest to zbyt wolne, a prędkość wysyłania znacznie mniejsza niż prędkość odbioru.
Dlatego jeśli chcesz użyć długiego połączenia socket do wysyłania i odbierania danych, napisz serwer socket i klienta samodzielnie, to strata czasu, ale może nie być dobrze wykonana
Na koniec, activemq służy do wysyłania i odbierania danych
Po pierwsze, kod producenta jest następujący:
Konsumenci, są dwa modele:
1: Zwykła subskrypcja, nie potrzeba trwałej "subskrypcji", czyli podczas łączenia możesz otrzymywać wiadomości, a nie możesz ich odbierać przed połączeniem, używając "CreateConsumer" 2: Subskrypcja trwała, po połączeniu możesz otrzymywać dane, które wcześniej nie były wysyłane, korzystając z "CreateDurableConsumer"
Linki do wprowadzenia CreateDurableConsumer:Logowanie do linku jest widoczne.
Utwórz niewspółdzieloną trwałą subskrypcję na określony temat, jeśli jeszcze nie istnieje, i stwórz konsumenta na tej trwałej subskrypcji. Ta metoda tworzy trwałą subskrypcję bez użycia selektora wiadomości, a wartość noLocal jest fałszywa. Aplikacja korzysta z trwałej subskrypcji i musi otrzymywać wszystkie komunikaty opublikowane na ten temat, w tym komunikaty publikowane, gdy nie ma aktywnych konsumentów powiązanych z nią. Dostawca JMS prowadzi rejestr tej trwałej subskrypcji i zapewnia, że wszystkie wiadomości od danego wydawcy będą przechowywane do momentu ich dostarczenia konsumentowi i potwierdzenia przez tę trwałą subskrypcję aż do ich wygaśnięcia.
Trwałe subskrypcje nadal gromadzą wiadomości, aż zostaną usunięte metodą wypisania.
Metoda ta może być stosowana tylko z niewspółdzielonymi, trwałymi subskrypcjami. Wszelkie trwałe subskrypcje utworzone tą metodą zostaną nieudostępnione. Oznacza to, że na subskrypcji może istnieć tylko jeden aktywny (czyli nie zamknięty) konsument. Termin "konsument" oznacza tutaj obiekt TopicSubscriber, MessageConsumer lub JMSConsumer w dowolnym kliencie.
Niewspółdzielona, trwała subskrypcja jest identyfikowana przez nazwę określoną przez klienta oraz identyfikatorem klienta, który należy ustawić. Aplikacje, które chcą tworzyć konsumentów na niewspółdzielonej subskrypcji trwałej, muszą używać tego samego identyfikatora klienta.
Jeśli istnieje już nieudostępniona trwała subskrypcja o tej samej nazwie i identyfikatorze klienta, a ten sam temat, selektor wiadomości i wartość bez lokalnej są już określone, a żaden konsument nie jest już aktywny (czyli nie zamknięty) na trwałej subskrypcji, ta metoda tworzy istniejącą trwałą subskrypcję na MessageConsumer.
Jeśli istnieje już niewspółdzielona trwała subskrypcja o tej samej nazwie i identyfikatorze klienta, a na trwałej subskrypcji jest konsument, który jest już aktywny (czyli nie zamknięty), zostanie wygenerowana JMSException.
Jeśli istnieje już niewspółdzielona trwała subskrypcja o tej samej nazwie i identyfikatorze klienta, ale innym podmiotie, określono selektor wiadomości lub wartość noLocal, a żaden konsument nie jest już aktywny (czyli nie zamknięty) na trwałej subskrypcji, to jest to równoważne z wykreśleniem (usunięciem) starego i utworzeniem nowej.
Udostępnione i nieudostępnione, trwałe subskrypcje mogą nie mieć tej samej nazwy i tożsamości klienta. Jeśli istnieje już współdzielona, trwała subskrypcja o tej samej nazwie i identyfikatorze klienta, uruchamia się JMSException.
Nie ma ograniczenia dla subskrypcji trwałych i współdzielonych subskrypcji nietrwałych o tej samej nazwie i clientId. Taka subskrypcja będzie całkowicie osobna.
Ta metoda jest taka sama jak odpowiadająca jej metoda createDurableSubscriber, z tą różnicą, że zwraca MessageConsumer zamiast TopicSubscriber, aby reprezentować konsumenta.
Parametr: Tematy - Subskrypcje tematyczne nietymczasowe nazwa - nazwa użyta do identyfikacji tej subskrypcji Rzut: InvalidDestinationException – Jeśli podano nieprawidłowy temat. IllegalStateException – Jeśli identyfikator gościa nie jest ustawiony JMSException - Jeśli sesja nie utworzy niewspółdzielonej trwałej subskrypcji i MessageConsumer z powodu wewnętrznego błędu Jeśli istnieje już niewspółdzielona trwała subskrypcja o tej samej nazwie i identyfikatorze klienta, a konsument jest już aktywny Jeśli istnieje już wspólna, trwała subskrypcja o tej samej nazwie i identyfikatorze klienta Od tego co następuje: JMS 2.0 IMessageConsumer CreateDurableConsumer(Destination ITopic, nazwa ciągu ciągów, selektor ciągu, bool noLocal);
gdzie messageSelector jest selektorem wiadomości; Flaga noLocal jest domyślnie fałszywa i gdy jest ustawiona na prawda, ogranicza konsumentom możliwość otrzymywania tylko wiadomości publikowanych przez to samo połączenie co oni sami, co dotyczy tylko tematów, nie kolejek. Nazwa to unikalna tożsamość tematu subskrypcji, a ten parametr należy ustawić przy subskrypcji trwałej.
Activemq .net musi odnieść się do pobrania pakietu:Logowanie do linku jest widoczne.
Pełne pobranie kodu źródłowego:
Turyści, jeśli chcecie zobaczyć ukrytą zawartość tego wpisu, proszę Odpowiedź
|