Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 304494|Odpowiedź: 72

[Źródło] c# Wykorzystanie kolejki wiadomości MessageQueue z kodem źródłowym

  [Skopiuj link]
Opublikowano 14.12.2016 13:51:37 | | | |

Dzięki MSMQ (Microsoft Message Queue) programiści aplikacji mogą wygodnie i niezawodnie komunikować się z aplikacjami, wysyłając i odbierając wiadomości. Przetwarzanie wiadomości zapewnia niezawodną, awaryjną metodę gwarantowania wiadomości i realizacji wielu procesów biznesowych.

MSMQ, podobnie jak XML Web Services i .Net Remoting, to rozproszona technologia programistyczna (DSM). Jednak przy użyciu XML Web Services lub komponentów .Net Relading, klient musi wymieniać się informacjami z serwerem w czasie rzeczywistym, a serwer musi pozostać online. MSMQ może działać, gdy serwer jest offline, tymczasowo zapisując wiadomość w kolejce wiadomości po stronie klienta, a następnie wysyłając ją do serwera do przetworzenia, gdy jest online.

Oczywiście MSMQ nie nadaje się do sytuacji, gdy klient musi reagować terminowo z serwera, a MSMQ współpracuje z serwerem w sposób asynchroniczny, więc nie ma potrzeby długiego czekania na przetwarzanie przez serwer.



Chociaż zarówno XML Web Services, jak i .Net Relading oferują właściwość [OneWay] do obsługi wywołań asynchronicznych, służy ona do rozwiązania problemu długich wywołań metod po stronie serwera, które blokują klienta przez długi czas. Jednak nie rozwiązuje to problemu dużego obciążenia klienta, a serwer przyjmuje żądania szybciej, niż jest w stanie przetworzyć.

Ogólnie rzecz biorąc, atrybut [OneWay] nie jest używany w specjalistycznych usługach komunikatorskich.



1. Podstawowe terminy i pojęcia

"Wiadomość" to jednostka danych przesyłana między dwoma komputerami. Wiadomości mogą być bardzo proste, na przykład zawierać tylko ciągi tekstowe; Może być też bardziej złożona i zawierać osadzone obiekty.



Wiadomości są wysyłane do kolejki. "Kolejka wiadomości" to kontener, który przechowuje wiadomości podczas ich transmisji. Menedżer kolejki wiadomości pełni rolę pośrednika podczas przekazywania wiadomości ze źródła do odbiorcy. Głównym celem kolejki jest zapewnienie routingu i gwarancja dostarczania wiadomości; Jeśli odbiorca jest niedostępny w momencie wysłania wiadomości, kolejka wiadomości przechowuje wiadomość do momentu jej pomyślnego dostarczenia.



"Kolejka wiadomości" to technologia przetwarzania wiadomości firmy Microsoft, która umożliwia przetwarzanie wiadomości i kolejkowanie wiadomości dla dowolnej aplikacji w dowolnej kombinacji komputerów z zainstalowanym systemem Microsoft Windows, niezależnie od tego, czy są one w tej samej sieci, czy online w tym samym czasie.



"Sieć kolejki wiadomości" to każda grupa komputerów, które mogą przesyłać wiadomości między sobą. Różne komputery w sieci pełnią różne role w zapewnieniu płynnego przetwarzania wiadomości. Niektóre z nich dostarczają informacje o trasowaniu do określenia, jak wysyłać wiadomości, inne zawierają ważne informacje o całej sieci, a jeszcze inne po prostu wysyłają i odbierają wiadomości.



Podczas instalacji Message Queue administratorzy określają, które serwery mogą się ze sobą komunikować i ustalają specjalne role dla konkretnych serwerów. Komputery tworzące tę sieć "kolejek wiadomości" nazywane są "stronami" i są ze sobą połączone "linkami do stron". Każdy sitelink ma przypisany "narzut", który jest ustalany przez administratora i wskazuje, jak często wiadomości są dostarczane przez ten sitelink.



Administrator kolejki wiadomości konfiguruje także jeden lub więcej komputerów w sieci, które działają jako serwery routingu. Serwer routingowy analizuje narzut każdego sitelinku, aby określić najszybszy i najefektywniejszy sposób dostarczenia wiadomości przez wiele stron i określić, jak ją przekazać.



2. Typ kolejki

Istnieją dwa główne typy kolejek: kolejki tworzone przez Ciebie lub innych użytkowników w Twojej sieci oraz kolejki systemowe.

Kolejka utworzona przez użytkownika może być dowolna z następujących funkcji:

Kolejki publiczne są replikowane w całej sieci kolejek wiadomości i mają potencjał do dostępu dla wszystkich lokalizacji połączonych z siecią.

Prywatne kolejki nie są publikowane w całej sieci. Zamiast tego są dostępne tylko na lokalnym komputerze, w którym się znajdują. Prywatne kolejki mogą być dostępne tylko przez aplikacje, które znają pełną nazwę ścieżki lub etykietę kolejki.

Kolejka zarządzania zawiera wiadomości potwierdzające otrzymanie wiadomości wysłanych w danej sieci kolejki wiadomości. Określ kolejkę zarządzania, której chcesz, aby komponent MessageQueue używał, jeśli taka jest.

Kolejka odpowiedzi zawiera komunikaty odpowiedzi zwracane do aplikacji wysyłającej, gdy aplikacja docelowa otrzyma tę wiadomość. Określ kolejkę odpowiedzi, której chcesz, aby komponent MessageQueue używał, jeśli w ogóle występuje.



Kolejki generowane przez system są zazwyczaj podzielone na następujące kategorie:

Journal Queue opcjonalnie przechowuje kopie wysłanych wiadomości oraz kopie wiadomości usuniętych z kolejki. Pojedyncza kolejka dziennika na każdym kliencie Kolejki Wiadomości przechowuje kopię wiadomości wysyłanych z tego komputera. Dla każdej kolejki na serwerze tworzona jest osobna kolejka dziennika. Ten dziennik śledzi wiadomości usunięte z tej kolejki.

Kolejka Dead Letter przechowuje kopie wiadomości, które nie mogą zostać dostarczone lub które wygasły. Jeśli wiadomość, która wygasa lub nie może zostać dostarczona, jest transakcyjna, jest przechowywana w specjalnej kolejce martwych listów zwanej "transakcyjną kolejką martwych listów". Martwe litery są przechowywane na komputerze tam, gdzie znajduje się wygasła wiadomość. Więcej informacji o wiadomościach o przemięcie czasu i wygaśnięciu można znaleźć w sekcji Domyślne właściwości wiadomości.

Kolejka raportów zawiera komunikaty wskazujące trasę, jaką pokonuje wiadomość, aby dotrzeć do celu, a także może zawierać wiadomości testowe. Na każdym komputerze może być tylko jedna kolejka raportowa.

Dedykowana kolejka systemowa to seria dedykowanych kolejek, które przechowują komunikaty zarządzania i powiadomień potrzebne systemowi do wykonania operacji przetwarzania wiadomości.

Większość pracy wykonywanej w aplikacji polega na uzyskiwaniu dostępu do publicznych kolejek i ich wiadomości. Jednak w zależności od dziennika, potwierdzenia i innych specjalnych potrzeb przetwarzania, prawdopodobne jest, że w codziennych operacjach będzie wykorzystywanych kilka różnych kolejek systemowych.



3. Komunikacja synchroniczna VS. asynchroniczna

Komunikacja kolejkowa jest z natury asynchroniczna, ponieważ wysyłanie wiadomości do i odbiór wiadomości z kolejki odbywa się w różnych procesach. Ponadto operacja odbioru może być wykonywana asynchronicznie, ponieważ osoba chcąca odebrać wiadomość może wywołać metodę BeginReceive do dowolnej kolejki i natychmiast kontynuować inne zadania bez oczekiwania na odpowiedź. To bardzo różni się od tego, co ludzie znają jako "komunikację synchroniczną".



W komunikacji synchronicznej nadawca żądania musi czekać na odpowiedź od zamierzonego odbiorcy, zanim wykona inne zadania. Czas oczekiwania nadawcy zależy całkowicie od czasu potrzebnego na przetworzenie żądania i wysłanie odpowiedzi.



4. Interakcja z kolejkami wiadomości

Przetwarzanie i komunikacja wiadomości zapewniają potężny i elastyczny mechanizm komunikacji między procesami pomiędzy komponentami aplikacji serwerowych. Oferują kilka zalet w porównaniu z bezpośrednim wywołaniem między komponentami, w tym:

Stabilność – Awarie komponentów dotykają wiadomości znacznie mniej niż bezpośrednie połączenia między komponentami, ponieważ wiadomości są przechowywane w kolejce i pozostają tam aż do ich właściwego przetworzenia. Przetwarzanie wiadomości jest podobne do przetwarzania transakcji, ponieważ przetwarzanie wiadomości jest gwarantowane.
Priorytetyzacja wiadomości – Szybciej pilne lub ważne wiadomości można otrzymać przed relatywnie nieistotnymi, dzięki czemu możesz zagwarantować odpowiedni czas reakcji dla kluczowych aplikacji.
Możliwość offline – Po wysłaniu wiadomości mogą zostać wysłane do tymczasowej kolejki i pozostać tam do czasu pomyślnego dostarczenia. Gdy dostęp do żądanej kolejki jest niedostępny z jakiegokolwiek powodu, użytkownik może kontynuować działanie. Jednocześnie inne operacje mogą być kontynuowane, jakby wiadomość została przetworzona, ponieważ dostarczenie wiadomości jest gwarantowane po przywróceniu połączenia sieciowego.
Przetwarzanie wiadomości transakcyjnych – Łącz wiele powiązanych wiadomości w jedną transakcję, aby zapewnić, że wiadomości będą dostarczane sekwencyjnie, tylko raz, i mogą być pomyślnie pobrane z docelowej kolejki. Jeśli wystąpią błędy, cała transakcja zostaje anulowana.
Bezpieczeństwo – Technologia kolejki wiadomości, na której opiera się komponent MessageQueue, wykorzystuje zabezpieczenia Windows do zabezpieczenia dostępu do zabezpieczenia, audytu oraz szyfrowania i uwierzytelniania wiadomości wysyłanych i odbieranych przez komponent.


5. Napisz prosty program kolejki wiadomości w środowisku .Net

(1) Najpierw zainstaluj usługi kolejki wiadomości

Zainstaluj MSMQ przez Panel Sterowania, w kroku "Dodaj/Usuń programy" – "Dodaj/Usuń komponenty Windows".

MSMQ można zainstalować zarówno w trybie grupy roboczej, jak i domeny. Jeśli instalator nie znajdzie serwera uruchamiającego kolejkę wiadomości świadczącą usługi katalogowe, można ją zainstalować tylko w trybie grupy roboczej, a kolejka wiadomości na tym komputerze obsługuje jedynie tworzenie prywatnych kolejek oraz bezpośrednie połączenia z innymi komputerami uruchamiającymi kolejki wiadomości.



(2) Konfiguruj MSMQ

Zarządzanie komputerem – kolejka wiadomości i utworzenie kolejki MSMQDemo w kolejkach prywatnych


(3) Napisz kod – po prostu zdemonstruj obiekt MSMQ

Klasa MessageQueue to wrapper wokół "message queue". Klasa MessageQueue dostarcza odniesienia do Message Queue queue. Możesz określić ścieżkę do istniejącego zasobu w konstruktorze MessageQueue lub utworzyć nową kolejkę na serwerze. Zanim będziesz mógł wywołać Send, Peek lub Receive, musisz powiązać nową instancję klasy MessageQueue z istniejącą kolejką.



MessageQueue obsługuje dwa typy pobierania wiadomości: synchroniczne i asynchroniczne. Zsynchronizowane metody Peek i Receive powodują, że wątek procesu czeka na nową wiadomość w określonej kolejce. Asynchroniczne metody BeginPeek i BeginReceive pozwalają głównemu zadaniu aplikacji kontynuować wykonywanie w osobnym wątku, zanim wiadomość dotrze do kolejki. Metody te działają poprzez wykorzystywanie obiektów callback i stanów, aby ułatwić komunikację informacji między wątkami.


Pobranie kodu źródłowego:

Turyści, jeśli chcecie zobaczyć ukrytą zawartość tego wpisu, proszęOdpowiedź





Poprzedni:15 dobrze. .NET
Następny:C#/.net odczytuje kod źródłowy informacji o hashu torrent torrent
Opublikowano 13.06.2021 20:54:46 |
OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK
Opublikowano 22.02.2019 11:01:34 |
https://download.csdn.net/download/winrich/9585398
Opublikowano 21.07.2021 11:20:26 |
Dobrze, dobrze
Opublikowano 21.12.2016 23:04:53 |
Dziękuję, właścicielu
Opublikowano 28.12.2016 19:20:26 |
Sprawdź ten obecny, aby zrobić to ćwiczenie
Opublikowano 14.07.2017 16:32:06 |
Dziękuję, właścicielu。。。。。。。
Opublikowano 18.10.2017 14:26:45 |
Ucz się od liderów grup
Opublikowano 24.10.2017 05:39:19 |
Naucz się go
Opublikowano 18.11.2017 21:56:57 |
GOOOOOOOOOOOOOOOOOOOD
Opublikowano 14.12.2017 14:04:20 |
Na dobre wpisy trzeba odpowiedzieć
Opublikowano 16.12.2017 21:49:55 |
213123 saedwaeas
Opublikowano 17.12.2017 08:56:11 |
Spójrz, co jest mówione
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com