Co to jest usługa Azure Service Bus?
Usługa Azure Service Bus to w pełni zarządzany broker komunikatów przedsiębiorstwa z kolejkami komunikatów i tematami publikowania i subskrybowania. Usługa Service Bus służy do oddzielenia aplikacji i usług od siebie, zapewniając następujące korzyści:
- Równoważenie obciążenia działa między konkurencyjnymi procesami roboczymi
- Bezpieczne kierowanie i przesyłanie danych i kontroli między granicami usług i aplikacji
- Koordynowanie prac transakcyjnych wymagających wysokiego stopnia niezawodności
Omówienie
Dane są przesyłane między różnymi aplikacjami i usługami przy użyciu komunikatów. Komunikat jest kontenerem ozdobionym metadanymi i zawiera dane. Dane mogą być dowolnym rodzajem informacji, w tym dane ustrukturyzowane zakodowane przy użyciu typowych formatów, takich jak następujące: JSON, XML, Apache Avro, Zwykły tekst.
Niektóre typowe scenariusze obsługi komunikatów:
Obsługa komunikatów. Transfer danych biznesowych, takich jak sprzedaż lub zamówienia zakupu, dzienniki lub ruchy zapasów.
Rozdziel aplikacje. Zwiększanie niezawodności i skalowalności aplikacji i usług. Producent i konsument nie muszą być w trybie online ani łatwo dostępne w tym samym czasie. Obciążenie jest wyrównane, tak aby skoki ruchu nie przewyższyły usługi.
Równoważenie obciążenia. Zezwalaj wielu konkurencyjnym konsumentom na odczytywanie z kolejki w tym samym czasie, z których każdy bezpiecznie uzyskuje wyłączność własności do określonych komunikatów.
Tematy i subskrypcje. Włącz relacje 1:n między wydawcami i subskrybentami, umożliwiając subskrybentom wybieranie określonych wiadomości z opublikowanego strumienia wiadomości.
Transakcje. Umożliwia wykonywanie kilku operacji— wszystkie w zakresie transakcji niepodzielnej. Na przykład następujące operacje można wykonać w zakresie transakcji.
- Uzyskiwanie komunikatu z jednej kolejki.
- Opublikuj wyniki przetwarzania do co najmniej jednej innej kolejki.
- Przenieś komunikat wejściowy z oryginalnej kolejki.
Wyniki stają się widoczne dla odbiorców podrzędnych tylko w przypadku powodzenia, w tym pomyślnego rozliczenia komunikatu wejściowego, co pozwala na przetwarzanie semantyki tylko raz. Ten model transakcji jest solidną podstawą wzorca transakcji wyrównywujących w większym kontekście rozwiązania.
Sesje komunikatów. Zaimplementuj wysoką koordynację przepływów pracy i multipleksowanych transferów, które wymagają ścisłego porządkowania komunikatów lub odroczenia komunikatów.
Jeśli znasz innych brokerów komunikatów, takich jak Apache ActiveMQ, pojęcia usługi Service Bus są podobne do tego, co wiesz. Ponieważ usługa Service Bus jest ofertą typu "platforma jako usługa" (PaaS), kluczową różnicą jest to, że nie musisz martwić się o następujące akcje. Platforma Azure zajmuje się tymi zadaniami.
- Martwienie się o awarie sprzętu
- Utrzymywanie poprawek systemów operacyjnych lub produktów
- Umieszczanie dzienników i zarządzanie miejscem na dysku
- Obsługa kopii zapasowych
- Przechodzenie w tryb failover do maszyny rezerwowej
Pojęcia
W tej sekcji omówiono podstawowe pojęcia dotyczące usługi Service Bus.
Kolejki
Komunikaty są wysyłane do kolejek i odbierane z nich. Kolejki przechowują komunikaty, dopóki aplikacja odbierający nie będzie dostępna do ich odbierania i przetwarzania.
Komunikaty w kolejkach są uporządkowane i znaczniki czasu po przybyciu. Gdy broker zaakceptuje komunikat, komunikat jest zawsze przechowywany w magazynie potrójnie nadmiarowym, rozłożony na strefy dostępności, jeśli przestrzeń nazw jest włączona w strefie. Usługa Service Bus przechowuje komunikaty w pamięci lub nietrwałym magazynie, dopóki klient nie zgłosi ich jako zaakceptowane.
Komunikaty są dostarczane w trybie ściągania , dostarczając komunikaty tylko po żądaniu. W przeciwieństwie do modelu zajętego sondowania niektórych innych kolejek w chmurze, operacja ściągania może być długotrwała i wykonywana tylko po udostępnieniu komunikatu.
Uwaga
Aby zapoznać się z porównaniem kolejek usługi Service Bus z kolejkami usługi Storage, zobacz Kolejki magazynu i kolejki usługi Service Bus — porównywane i kontrastowane.
Tematy
Do wysyłania i odbierania komunikatów można również używać tematów. Podczas gdy kolejka jest często używana do komunikacji punkt-punkt, tematy są przydatne w scenariuszach publikowania-subskrybowania.
Tematy mogą mieć wiele, niezależnych subskrypcji, które dołączają do tematu i działają dokładnie tak jak kolejki po stronie odbiorcy. Subskrybent tematu może otrzymywać kopie wszystkich komunikatów wysłanych do tego tematu. Subskrypcje są nazwane jednostki. Subskrypcje są domyślnie trwałe, ale można je skonfigurować do wygaśnięcia, a następnie automatycznie usuwać. Za pośrednictwem interfejsu API usługi Java Message Service (JMS) usługa Service Bus Premium umożliwia również tworzenie nietrwałych subskrypcji, które istnieją przez czas trwania połączenia.
Możesz zdefiniować reguły dla subskrypcji. Reguła subskrypcji zawiera filtr definiujące warunek skopiowania komunikatu do subskrypcji oraz opcjonalną akcję , która może modyfikować metadane komunikatu. Aby uzyskać więcej informacji, zobacz Temat filtry i akcje. Ta funkcja jest przydatna w następujących scenariuszach:
- Nie chcesz, aby subskrypcja odbierała wszystkie komunikaty wysyłane do tematu.
- Chcesz oznaczyć komunikaty dodatkowymi metadanymi podczas przekazywania subskrypcji.
Uwaga
Aby uzyskać więcej informacji na temat kolejek i tematów, zobacz Kolejki, tematy i subskrypcje usługi Service Bus.
Przestrzenie nazw
Przestrzeń nazw to kontener dla wszystkich składników obsługi komunikatów (kolejek i tematów). Przestrzeń nazw może zawierać co najmniej jedną kolejkę i tematy, a często służy jako kontener aplikacji.
Przestrzeń nazw można porównać z serwerem w terminologii innych brokerów, ale pojęcia nie są bezpośrednio równoważne. Przestrzeń nazw usługi Service Bus to fragment pojemności dużego klastra składający się z kilkudziesięciu aktywnych maszyn wirtualnych. Opcjonalnie obejmuje trzy strefy dostępności platformy Azure. Dzięki temu uzyskasz wszystkie korzyści z dostępności i niezawodności uruchamiania brokera komunikatów na ogromną skalę. I nie musisz martwić się o podstawowe złożoność. Usługa Service Bus to bezserwerowa obsługa komunikatów.
Funkcje zaawansowane
Usługa Service Bus ma również zaawansowane funkcje, które umożliwiają rozwiązywanie bardziej złożonych problemów z obsługą komunikatów. Te kluczowe funkcje zostały opisane w sekcjach poniżej:
Sesje komunikatów
Aby zrealizować gwarancję fiFO (first-in, first-out) w przetwarzaniu komunikatów w kolejkach lub subskrypcjach usługi Service Bus, użyj sesji. Sesje mogą być również używane w implementowaniu wzorców żądań-odpowiedzi. Wzorzec odpowiedzi na żądanie umożliwia aplikacji nadawcy wysyłanie żądania i umożliwia odbiorcy poprawne wysłanie odpowiedzi z powrotem do aplikacji nadawcy. Aby uzyskać więcej informacji, zobacz Sesje komunikatów.
Automatyczne przekazywanie
Funkcja automatycznego przesyłania dalej umożliwia łączenie kolejki lub subskrypcji z inną kolejką lub tematem, który jest częścią tej samej przestrzeni nazw. Gdy funkcja automatycznego przekazywania jest włączona, usługa Service Bus automatycznie usuwa komunikaty znajdujące się w pierwszej kolejce lub subskrypcji (źródle) i umieszcza je w drugiej kolejce lub drugim temacie (celu). Aby uzyskać więcej informacji, zobacz Łączenie jednostek usługi Service Bus z automatycznym przekazywaniem
Obsługa utraconych komunikatów
Kolejki i subskrypcje tematów usługi Service Bus udostępniają dodatkową kolejkę nazywaną kolejką utraconych komunikatów (DLQ). Kolejka utraconych komunikatów zawiera komunikaty, których nie można dostarczyć do żadnego odbiorcy ani komunikatów, których nie można przetworzyć. Te komunikaty można usunąć z kolejki DLQ lub zbadać. Aplikacja może, z pomocą operatora, rozwiązać problemy i ponownie przesłać komunikat, zarejestrować fakt, że wystąpił błąd, i podjąć akcję naprawczą. Aby uzyskać więcej informacji, zobacz Omówienie kolejek utraconych komunikatów usługi Service Bus.
Zaplanowane dostarczanie
Komunikaty można przesyłać do kolejki lub tematu w celu opóźnionego przetwarzania. Aby na przykład zaplanować udostępnienie zadania do przetwarzania przez system w określonym czasie. Aby uzyskać więcej informacji, zobacz Zaplanowane komunikaty.
Odraczanie komunikatów
Gdy klient kolejki lub subskrypcji otrzymuje komunikat, że jest gotów przetworzyć, ale dla którego przetwarzanie nie jest obecnie możliwe z powodu szczególnych okoliczności w aplikacji, jednostka może odroczyć pobieranie komunikatu do późniejszego punktu. Komunikat pozostaje w kolejce lub subskrypcji, ale jest odkładany. Aby uzyskać więcej informacji, zobacz Odroczenie komunikatów.
Transakcje
Transakcja grupuje razem co najmniej dwie operacje w zakresie wykonania. Usługa Service Bus obsługuje grupowanie operacji względem jednej jednostki obsługi komunikatów (kolejki, tematu, subskrypcji) w zakresie transakcji. Aby uzyskać więcej informacji, zobacz Omówienie przetwarzania transakcji usługi Service Bus.
Filtry i akcje
Subskrybenci mogą zdefiniować, które komunikaty chcą odbierać z tematu. Komunikaty te są określone w formie co najmniej jednej nazwanej reguły subskrypcji. Każda reguła składa się z warunku filtru, który wybiera określone komunikaty i opcjonalnie zawiera akcję , która donotuje wybrany komunikat. Dla każdego zgodnego warunku reguły subskrypcja tworzy kopię komunikatu, która może być inaczej oznaczona jako adnotacja dla każdej zgodnej reguły. Aby uzyskać więcej informacji, zobacz Temat filtry i akcje.
Automatyczne usuwanie w stanie bezczynności
Automatyczne usuwanie w stanie bezczynności służy do określania interwału bezczynności, po którym kolejka zostanie automatycznie usunięta. Interwał jest resetowany w przypadku ruchu w kolejce. Minimalny czas trwania wynosi 5 minut.
Wykrywanie duplikatów
Jeśli wystąpi błąd, który powoduje, że klient ma wątpliwości co do wyniku operacji wysyłania, wykrywanie duplikatów powoduje wątpliwości co do tych sytuacji, umożliwiając nadawcy ponowne wysłanie tego samego komunikatu, a kolejka lub temat odrzuca wszelkie duplikaty kopii. Aby uzyskać więcej informacji, zobacz Wykrywanie duplikatów.
Usuwanie wsadowe komunikatów
Usługa Azure Service Bus obsługuje usuwanie komunikatów w partiach. Jest to przydatne w scenariuszach, gdy komunikaty w kolejkach lub subskrypcjach wygasły lub nie są już istotne, co wymaga czyszczenia. Aby uzyskać więcej informacji, zobacz Usuwanie usługi Batch.
Zabezpieczenia
Usługa Service Bus obsługuje protokoły zabezpieczeń, takie jak sygnatury dostępu współdzielonego (SAS), kontrola dostępu oparta na rolach (RBAC) i tożsamości zarządzane dla zasobów platformy Azure.
Usługa Service Bus obsługuje standardowe protokoły Advanced Message Queuing Protocol (AMQP) 1.0 i HTTP/REST .
Geograficzne odzyskiwanie po awarii
Jeśli w regionach lub centrach danych Azure dojdzie do przestoju, geograficzne odzyskiwanie po awarii umożliwia kontynuowanie przetwarzania danych w innym regionie lub centrum danych.
Uwaga
Aby uzyskać więcej informacji na temat tych funkcji, zobacz Zaawansowane funkcje usługi Azure Service Bus.
Zgodność ze standardami i protokołami
Podstawowym protokołem przewodowym dla usługi Service Bus jest protokół Advanced Messaging Queueing Protocol (AMQP) 1.0, otwarty standard ISO/IEC. Umożliwia ona klientom pisanie aplikacji, które działają względem usługi Service Bus i lokalnych brokerów, takich jak ActiveMQ lub RabbitMQ. Przewodnik po protokole AMQP zawiera szczegółowe informacje na wypadek, gdy chcesz utworzyć taką abstrakcję.
Usługa Service Bus Premium jest w pełni zgodna z interfejsem API Java/Jakarta EE Java Message Service (JMS) 2.0 . Usługa Service Bus Standard obsługuje podzestaw JMS 1.1 skoncentrowany na kolejkach. Usługa JMS jest powszechną abstrakcją dla brokerów komunikatów i integruje się z wieloma aplikacjami i strukturami, w tym popularną platformą Spring. Aby przełączyć się z innych brokerów do usługi Azure Service Bus, wystarczy ponownie utworzyć topologię kolejek i tematów oraz zmienić zależności i konfigurację dostawcy klienta. Aby zapoznać się z przykładem, zobacz przewodnik migracji activemq.
Biblioteki klienta
W pełni obsługiwane biblioteki klienta usługi Service Bus są dostępne za pośrednictwem zestawu Azure SDK.
- Usługa Azure Service Bus dla platformy .NET
- Struktury innych firm zapewniające abstrakcje wyższego poziomu oparte na zestawie SDK obejmują NServiceBus i MassTransit.
- Biblioteki usługi Azure Service Bus dla języka Java
- Dostawca usługi Azure Service Bus dla środowiska Java JMS 2.0
- Moduły usługi Azure Service Bus dla języków JavaScript i TypeScript
- Biblioteki usługi Azure Service Bus dla języka Python
Podstawowy protokół usługi Azure Service Bus to AMQP 1.0 i może być używany z dowolnego zgodnego klienta protokołu AMQP 1.0. Kilku klientów amQP typu open source ma przykłady, które jawnie pokazują współdziałanie usługi Service Bus. Zapoznaj się z przewodnikiem po protokole AMQP 1.0, aby dowiedzieć się, jak używać funkcji usługi Service Bus bezpośrednio z klientami amQP 1.0.
Język | Biblioteka |
---|---|
Java | Apache Qpid Proton-J |
C/C++ | Azure uAMQP C, Apache Qpid Proton-C |
Python | Azure uAMQP for Python, Apache Qpid Proton Python) |
PHP | Azure uAMQP dla języka PHP |
Ruby | Apache Qpid Proton Ruby |
Go | Azure Go AMQP, Apache Qpid Proton Go |
C#/F#/VB | AMQP .NET Lite, Apache NMS AMQP |
JavaScript/Node | Nandu |
Integracja
Usługa Service Bus w pełni integruje się z wieloma usługami firmy Microsoft i platformy Azure, na przykład:
Następne kroki
Aby rozpocząć korzystanie z obsługi komunikatów usługi Service Bus, zobacz następujące artykuły:
- Kolejki, tematy i subskrypcje usługi Service Bus
- Przewodniki Szybki start: .NET, Java, JMS lub NServiceBus
- Cennik usługi Service Bus.
- Obsługa komunikatów w warstwie Premium.