Odnajdywanie kolejek, tematów i subskrypcji usługi Service Bus

Ukończone

Jednostki obsługi komunikatów, które tworzą podstawowe funkcje obsługi komunikatów w usłudze Service Bus, to kolejki, tematy i subskrypcje oraz reguły/akcje.

Kolejki

Kolejki umożliwiają dostarczanie komunikatów metodą pierwszy na wejściu — pierwszy na wyjściu (FIFO) do jednego lub większej liczby konkurencyjnych konsumentów. Oznacza to, że odbiorniki zwykle odbierają i przetwarzają komunikaty w kolejności, w jakiej zostały dodane do kolejki. I tylko jeden odbiorca komunikatu odbiera i przetwarza każdy komunikat. Ponieważ komunikaty są przechowywane trwale w kolejce, producenci (nadawcy) i odbiorcy (odbiorcy) nie muszą przetwarzać komunikatów jednocześnie.

Powiązana korzyść to bilansowanie obciążenia, które umożliwia producentom i konsumentom wysyłanie i odbieranie komunikatów z różnymi stawkami. W wielu aplikacjach obciążenie systemu różni się w czasie. Jednak czas przetwarzania wymagany dla każdej jednostki pracy jest zwykle stały. Intermediating message producentów i konsumentów z kolejką oznacza, że aplikacja zużywającą musi być w stanie obsłużyć średnie obciążenie zamiast szczytowego obciążenia.

Używanie kolejek do pośredniego między producentami komunikatów a konsumentami zapewnia nieodłączne luźne sprzężenie między składnikami. Ponieważ producenci i konsumenci nie znają się nawzajem, konsument może zostać uaktualniony bez wywierania żadnego wpływu na producenta.

Kolejki można tworzyć przy użyciu witryny Azure Portal, programu PowerShell, interfejsu wiersza polecenia lub szablonów usługi Resource Manager. Następnie wysyłaj i odbieraj komunikaty przy użyciu klientów napisanych w języku C#, Java, Python i JavaScript.

Tryby odbierania

Można określić dwa różne tryby, w których usługa Service Bus odbiera komunikaty: Odbieranie i usuwanie lub wyświetlanie blokady.

Odbieranie i usuwanie

W tym trybie, gdy usługa Service Bus odbiera żądanie od odbiorcy, oznacza komunikat jako wykorzystany i zwraca go do aplikacji konsumenta. Ten tryb jest najprostszym modelem. Najlepiej sprawdza się w scenariuszach, w których aplikacja nie może tolerować przetwarzania komunikatu, jeśli wystąpi awaria. Rozważmy na przykład scenariusz, w którym konsument wystawia żądanie odbioru, a następnie ulega awarii przed jego przetworzeniem. Ponieważ usługa Service Bus oznacza komunikat jako używany, aplikacja rozpoczyna korzystanie z komunikatów po ponownym uruchomieniu. Pomija komunikat, że został użyty przed awarią.

Podgląd blokady

W tym trybie operacja odbierania staje się operacją dwuetapową, co umożliwia obsługę aplikacji, które nie tolerują brakujących komunikatów.

  1. Znajduje następny komunikat, który ma zostać użyty, blokuje go, aby uniemożliwić innym użytkownikom odbieranie go, a następnie zwraca komunikat do aplikacji.

  2. Po zakończeniu przetwarzania komunikatu aplikacja wysyła żądanie do usługi Service Bus dotyczące ukończenia drugiego etapu procesu odbierania. Następnie usługa oznacza komunikat jako wykorzystany.

Jeśli aplikacja nie może przetworzyć komunikatu z jakiegoś powodu, może poprosić usługę Service Bus o porzucenie komunikatu. Usługa Service Bus odblokuje komunikat i udostępnia go ponownie przez tego samego konsumenta lub innego konkurencyjnego konsumenta. Po drugie, istnieje limit czasu skojarzony z blokadą. Jeśli aplikacja nie może przetworzyć komunikatu przed upływem limitu czasu blokady, usługa Service Bus odblokowuje komunikat i udostępnia go ponownie do odebrania.

Tematy i subskrypcje

Kolejka umożliwia przetwarzanie komunikatu przez jednego użytkownika. W przeciwieństwie do kolejek, tematów i subskrypcji zapewniają formę komunikacji jeden do wielu w wzorcu publikowania i subskrybowania . Jest to przydatne w przypadku skalowania do dużej liczby adresatów. Każdy publikowany komunikat jest udostępniany każdej subskrypcji zarejestrowanej w temacie. Program Publisher wysyła wiadomość do tematu, a co najmniej jeden subskrybenci otrzymują kopię wiadomości.

Subskrypcje mogą używać większej liczby filtrów, aby ograniczyć komunikaty, które chcą odbierać. Wydawcy wysyłają komunikaty do tematu w taki sam sposób, jak wysyłają komunikaty do kolejki. Jednak użytkownicy nie odbierają komunikatów bezpośrednio z tematu. Zamiast tego konsumenci otrzymują komunikaty z subskrypcji tematu. Subskrypcja tematu przypomina kolejkę wirtualną, która odbiera kopie komunikatów wysyłanych do tematu. Konsumenci odbierają komunikaty z subskrypcji tak samo jak w przypadku odbierania komunikatów z kolejki.

Funkcja wysyłania komunikatów kolejki jest mapowania bezpośrednio do tematu i jego funkcji odbierania komunikatów do subskrypcji. Między innymi ta funkcja oznacza, że subskrypcje obsługują te same wzorce opisane wcześniej w tej sekcji dotyczące kolejek: konkurencyjnych odbiorców, czasowego oddzielenia, bilansowania obciążenia i równoważenia obciążenia.

Reguły i akcje

W wielu scenariuszach komunikaty o określonych cechach muszą być przetwarzane na różne sposoby. Aby włączyć to przetwarzanie, możesz skonfigurować subskrypcje, aby znaleźć komunikaty, które mają żądane właściwości, a następnie wykonać pewne modyfikacje tych właściwości. Podczas gdy subskrypcje usługi Service Bus widzą wszystkie komunikaty wysyłane do tematu, można skopiować tylko podzbiór tych komunikatów do kolejki subskrypcji wirtualnej. Takie filtrowanie odbywa się przy użyciu filtrów subskrypcji. Takie modyfikacje są nazywane akcjami filtru. Po utworzeniu subskrypcji można podać wyrażenie filtru, które działa we właściwościach komunikatu. Właściwości mogą być właściwościami systemu (na przykład Etykieta) i niestandardowymi właściwościami aplikacji (na przykład StoreName). Wyrażenie filtru SQL jest opcjonalne w tym przypadku. Bez wyrażenia filtru SQL każda akcja filtru zdefiniowana w subskrypcji jest wykonywana na wszystkich komunikatach dla tej subskrypcji.