Co je Azure Service Bus?

Azure Service Bus je plně spravovaný podnikový zprostředkovatel zpráv s frontami zpráv a tématy publikování a odběru. Service Bus se používá k oddělení aplikací a služeb od sebe a poskytuje následující výhody:

  • Vyrovnávání zatížení práce mezi konkurenčními pracovními procesy
  • Bezpečné směrování a přenos dat a řízení napříč hranicemi služeb a aplikací
  • Koordinace transakční práce, která vyžaduje vysokou míru spolehlivosti

Přehled

Data se mezi různými aplikacemi a službami přenáší pomocí zpráv. Zpráva je kontejner zdobený metadaty a obsahuje data. Data můžou být jakýkoli druh informací, včetně strukturovaných dat kódovaných běžnými formáty, jako jsou například tyto: JSON, XML, Apache Avro, Prostý text.

Mezi běžné scénáře zasílání zpráv patří:

  • Zasílání zpráv. Přeneste obchodní data, jako jsou prodejní nebo nákupní objednávky, deníky nebo přesuny zásob.

  • Oddělte aplikace. Zvýšení spolehlivosti a škálovatelnosti aplikací a služeb Producent a spotřebitel nemusí být online ani snadno dostupné současně. Zatížení je vyrovnáno tak, aby špičky provozu nepřetěžovaly službu.

  • Vyrovnávání zatížení. Umožňuje více konkurenčním příjemcům číst z fronty současně, přičemž každý bezpečně získá výhradní vlastnictví konkrétních zpráv.

  • Témata a odběry Povolte 1:n vztahů mezi vydavateli a odběrateli, což umožňuje odběratelům vybírat konkrétní zprávy z publikovaného streamu zpráv.

  • Transakce. Umožňuje provádět několik operací, a to vše v oboru atomické transakce. Například následující operace lze provádět v oboru transakce.

    1. Získání zprávy z jedné fronty
    2. Po provedení zpracování do jedné nebo více různých front.
    3. Přesuňte vstupní zprávu z původní fronty.

    Výsledky se zviditelní pro podřízené příjemce pouze po úspěchu, včetně úspěšného vypořádání vstupní zprávy, což umožňuje sémantiku zpracování pouze jednou. Tento model transakcí je robustním základem modelu kompenzačních transakcí v širším kontextu řešení.

  • Relace zpráv. Implementujte rozsáhlou koordinaci pracovních postupů a multiplexovaných přenosů, které vyžadují přísné řazení zpráv nebo odložení zpráv.

Pokud znáte další zprostředkovatele zpráv, jako je Apache ActiveMQ, koncepty služby Service Bus se podobají tomu, co víte. Vzhledem k tomu, že Service Bus je nabídka typu platforma jako služba (PaaS), hlavní rozdíl spočívá v tom, že se nemusíte starat o následující akce. Azure se postará o tyto služby za vás.

  • Obavy o selhání hardwaru
  • Udržování operačních systémů nebo produktů opravených
  • Umístění protokolů a správa místa na disku
  • Zpracování záloh
  • Převzetí služeb při selhání k rezervovanému počítači

Koncepty

Tato část popisuje základní koncepty služby Service Bus.

Fronty

Zprávy se odesílají do front a přijímají se z nich. Fronty ukládají zprávy, dokud nebude přijímající aplikace dostupná pro příjem a zpracování.

Diagram znázorňující frontu služby Service Bus s odesílatelem a příjemcem, který odesílá a přijímá zprávy

Zprávy ve frontách jsou seřazené a časové razítko při příjezdu. Jakmile zprostředkovatel přijme zprávu, zpráva se vždy uchovává v trojnásobném redundantním úložišti, které je rozloženo mezi zóny dostupnosti, pokud je obor názvů povolený. Service Bus uchovává zprávy v paměti nebo nestálém úložišti, dokud je klient nehlásí jako přijaté.

Zprávy se doručují v režimu vyžádání obsahu , ale zprávy se doručují jenom v případě požadavku. Na rozdíl od modelu zaneprázdněného dotazování některých dalších cloudových front může být operace vyžádání dat dlouhodobá a dokončená pouze po zpřístupnění zprávy.

Poznámka:

Porovnání front Service Bus s frontami služby Storage najdete v tématu Fronty úložiště a fronty Service Bus – porovnání a kontrast.

Témata

K odesílání a přijímání zpráv můžete také použít témata. I když se fronta často používá ke komunikaci typu point-to-point, témata jsou užitečná ve scénářích publikování a odběru.

Diagram znázorňující téma služby Service Bus s jedním odesílatelem a více příjemci

Témata můžou mít více nezávislých odběrů, která se připojují k tématu, a jinak fungují přesně stejně jako fronty na straně příjemce. Odběratel tématu může přijímat kopie všech zpráv zaslaných do daného tématu. Předplatná jsou pojmenované entity. Předplatná jsou ve výchozím nastavení odolná, ale dají se nakonfigurovat tak, aby vypršela a pak se automaticky odstranila. Prostřednictvím rozhraní API služby Java Message Service (JMS) umožňuje Service Bus Premium také vytvářet nestálá předplatná, která existují po dobu trvání připojení.

Pravidla pro předplatné můžete definovat. Pravidlo odběru má filtr definující podmínku pro zkopírování zprávy do odběru a volitelnou akci, která může upravit metadata zpráv. Další informace najdete v tématu Filtry a akce tématu. Tato funkce je užitečná v následujících scénářích:

  • Nechcete, aby odběr přijímal všechny zprávy odeslané do tématu.
  • Při průchodu odběrem chcete označit zprávy s dalšími metadaty.

Poznámka:

Další informace o frontách a tématech najdete v tématu Fronty, témata a odběry služby Service Bus.

Obory názvů

Obor názvů je kontejner pro všechny komponenty zasílání zpráv (fronty a témata). Obor názvů může mít jednu nebo více front a témat a často slouží jako kontejner aplikace.

Obor názvů lze porovnat se serverem v terminologii jiných zprostředkovatelů, ale koncepty nejsou přímo ekvivalentní. Obor názvů služby Service Bus je váš vlastní řez kapacity velkého clusteru tvořeného desítkami všech aktivních virtuálních počítačů. Volitelně zahrnuje tři zóny dostupnosti Azure. Takže získáte všechny výhody dostupnosti a robustnosti provozování zprostředkovatele zpráv v obrovském měřítku. A nemusíte se starat o základní složitosti. Service Bus je bezserverové zasílání zpráv.

Rozšířené funkce

Service Bus má také pokročilé funkce, které vám umožní řešit složitější problémy týkající se zasílání zpráv. Následující části popisují tyto klíčové funkce:

Relace zpráv

Při zpracování zpráv ve frontách nebo odběrech služby Service Bus použijte relace, abyste si uvědomili záruku fiFO (first-in first-in). Relace se dají použít také při implementaci vzorců odezvy požadavků. Model odpovědi požadavku umožňuje aplikaci odesílatele odeslat požadavek a poskytuje způsob, jak příjemce správně odeslat odpověď zpět do aplikace odesílatele. Další informace naleznete v tématu Relace zpráv.

Automatické přeposílání

Funkce automatického předávání umožňuje zřetězit frontu nebo odběr do jiné fronty nebo tématu, která je součástí stejného oboru názvů. Pokud je automatické přeposílání povoleno, Service Bus automaticky odebere zprávy, které jsou umístěné v první frontě nebo odběru (zdroj) a vloží je do druhé fronty nebo tématu (cíl). Další informace najdete v tématu Řetězení entit služby Service Bus s automatickým předáváním.

Ukládání nedoručených zpráv

Fronty a odběry témat služby Service Bus poskytují sekundární podknižní frontu označovanou jako fronta nedoručených zpráv (DLQ). Fronta nedoručených zpráv obsahuje zprávy, které nelze doručit žádnému příjemci nebo zpráv, které nelze zpracovat. Zprávy pak můžete z DLQ odebrat a prozkoumat je. Aplikace může pomocí operátora opravit problémy a znovu odeslat zprávu, protokolovat skutečnost, že došlo k chybě, a provést nápravnou akci. Další informace najdete v tématu Přehled front nedoručených zpráv služby Service Bus.

Naplánované doručení

Zprávy můžete odeslat do fronty nebo tématu pro zpožděné zpracování. Pokud chcete například naplánovat, aby úloha byla v určitém okamžiku dostupná ke zpracování systémem. Další informace najdete v tématu Naplánované zprávy.

Odložení zpráv

Když klient fronty nebo odběru obdrží zprávu, že je ochotná zpracovat, ale pro které zpracování není aktuálně možné kvůli zvláštním okolnostem v aplikaci, může entita odložit načtení zprávy na pozdější bod. Zpráva zůstane ve frontě nebo odběru, ale je vyhrazená. Další informace naleznete v tématu Odložení zprávy.

Transakce

Skupiny transakcí seskupují dvě nebo více operací do rozsahu provádění. Service Bus podporuje operace seskupení u jedné entity zasílání zpráv (fronty, tématu, odběru) v rámci oboru transakce. Další informace naleznete v tématu Přehled zpracování transakcí služby Service Bus.

Filtry a akce

Odběratelé mohou definovat zprávy, které chtějí z tématu přijímat. Tyto zprávy se určují ve formě jednoho nebo více pojmenovaných pravidel odběru. Každé pravidlo se skládá z podmínky filtru, která vybere konkrétní zprávy, a volitelně obsahuje akci , která označí vybranou zprávu poznámkami. Pro každou odpovídající podmínku pravidla vytvoří odběr kopii zprávy, která může být pro každé odpovídající pravidlo odlišně označená. Další informace najdete v tématu Filtry a akce tématu.

Automatické odstranění v případě nečinnosti

Automatické odstranění v případě nečinnosti umožňuje zadat interval nečinnosti, po jehož uplynutí se fronta automaticky odstraní. Interval se resetuje, když je ve frontě provoz. Minimální doba trvání je 5 minut.

Vyhledávání duplicit

Pokud dojde k chybě, která způsobí, že klient bude mít pochybnosti o výsledku operace odeslání, duplicitní detekce z těchto situací odstraní pochybnosti tím, že odesílateli umožní znovu odeslat stejnou zprávu a fronta nebo téma zahodí všechny duplicitní kopie. Další informace najdete v tématu Detekce duplicit.

Dávkové odstranění zpráv

Azure Service Bus podporuje odstraňování zpráv v dávkách. To je užitečné ve scénářích, kdy vypršela platnost zpráv ve frontách nebo odběrech nebo už nejsou relevantní, což je nezbytné pro vyčištění. Další informace najdete v tématu Dávkové odstranění.

Zabezpečení

Service Bus podporuje protokoly zabezpečení, jako jsou sdílené přístupové podpisy (SAS), řízení přístupu na základě role (RBAC) (RBAC) a spravované identity pro prostředky Azure.

Service Bus podporuje standardní protokoly AMQP (Advanced Message Queuing Protocol) 1.0 a HTTP/REST .

Geografické zotavení po havárii

Pokud v oblastech nebo datových centrech Azure dojde k výpadku, geografické zotavení po havárii umožní, aby zpracování dat pokračovalo v jiné oblasti nebo datovém centru.

Poznámka:

Další informace o těchto funkcích najdete v tématu Pokročilé funkce služby Azure Service Bus.

Dodržování standardů a protokolů

Primárním přenosovým protokolem pro Service Bus je protokol AMQP (Advanced Messaging Queueing Protocol) 1.0, který je otevřený standard ISO/IEC. Umožňuje zákazníkům psát aplikace, které pracují se službou Service Bus a místními zprostředkovateli, jako jsou ActiveMQ nebo RabbitMQ. Průvodce protokolem AMQP poskytuje podrobné informace pro případ, že chcete vytvořit takovou abstrakci.

Service Bus Premium je plně kompatibilní s rozhraním API Java/Jakarta EE Java Message Service (JMS) 2.0 . A Service Bus Standard podporuje podmnožinu JMS 1.1 zaměřenou na fronty. JMS je běžná abstrakce pro zprostředkovatele zpráv a integruje se s mnoha aplikacemi a architekturami, včetně oblíbené architektury Spring. Pokud chcete přejít z jiných zprostředkovatelů na Službu Azure Service Bus, stačí znovu vytvořit topologii front a témat a změnit závislosti a konfiguraci zprostředkovatele klienta. Příklad najdete v průvodci migrací ActiveMQ.

Klientské knihovny

Plně podporované klientské knihovny Service Bus jsou k dispozici prostřednictvím sady Azure SDK.

Primární protokol služby Azure Service Bus je AMQP 1.0 a dá se použít z libovolného klienta protokolu kompatibilního s protokolem AMQP 1.0. Několik opensourcových klientů AMQP obsahuje ukázky, které explicitně demonstrují interoperabilitu služby Service Bus. Projděte si průvodce protokolem AMQP 1.0 a zjistěte, jak používat funkce služby Service Bus s klienty AMQP 1.0 přímo.

Jazyk Knihovna
Java Apache Qpid Proton-J
C/C++ Azure uAMQP C, Apache Qpid Proton-C
Python Azure uAMQP pro Python, Apache Qpid Proton Python)
PHP Azure uAMQP pro PHP
Ruby Apache Qpid Proton Ruby
Go Azure Go AMQP, Apache Qpid Proton Go
C#/F#/VB AMQP .NET Lite, Apache NMS AMQP
JavaScript nebo uzel Rhea

Integrace

Service Bus se plně integruje s mnoha službami Microsoftu a Azure, například:

Další kroky

Pokud chcete začít používat zasílání zpráv služby Service Bus, podívejte se na následující články: