Wat is Azure Service Bus?
Azure Service Bus is een volledig beheerde enterprise-berichtenbroker met berichtenwachtrijen en onderwerpen over publiceren/abonneren. Service Bus wordt gebruikt om toepassingen en services van elkaar los te koppelen, waardoor de volgende voordelen worden geboden:
- Taakverdeling tussen concurrerende werkrollen
- Veilig routeren en overdragen van gegevens en controle over de grenzen van services en toepassingen heen
- Transactionele werkzaamheden coördineren waarvoor een hoge mate van betrouwbaarheid vereist is
Overzicht
Gegevens worden uitgewisseld tussen verschillende toepassingen en services met behulp van berichten. Een bericht is een container die is voorzien van metagegevens en gegevens bevat. De gegevens kunnen elk soort informatie zijn, inclusief gestructureerde gegevens die zijn gecodeerd met de algemene indelingen, zoals JSON, XML, Apache Avro, Tekst zonder opmaak.
Enkele algemene berichtenscenario's:
Berichtenuitwisseling. Draag bedrijfsgegevens over, zoals verkoop- of inkooporders, dagboeken of voorraadverplaatsingen.
Toepassingen loskoppelen. Verbeter de betrouwbaarheid en schaalbaarheid van toepassingen en services. Producent en consument hoeven niet tegelijkertijd online of onmiddellijk beschikbaar te zijn. De belasting wordt verdeeld, zodat verkeerspieken een service niet overbelasten.
Taakverdeling. Meerdere concurrerende consumenten kunnen tegelijk lezen uit een wachtrij, waarbij elk veilig exclusief eigendom van specifieke berichten verkrijgt.
Onderwerpen en abonnementen. Schakel 1:n-relaties tussen uitgevers en abonnees in, zodat abonnees bepaalde berichten uit een stroom met gepubliceerde berichten kunnen selecteren.
Transacties. Hiermee kunt u verschillende bewerkingen uitvoeren, allemaal binnen het bereik van een atomische transactie. De volgende bewerkingen kunnen bijvoorbeeld worden uitgevoerd binnen het bereik van een transactie.
- Een bericht uit één wachtrij ophalen.
- Resultaten van verwerking naar een of meer verschillende wachtrijen verzenden.
- Het invoerbericht vanuit de oorspronkelijke wachtrij verplaatsen.
Alleen bij geslaagde resultaten zijn deze zichtbaar voor downstreamconsumenten, inclusief de geslaagde afwikkeling van invoerberichten, waardoor er slechts één verwerking nodig is. Dit transactiemodel is een robuuste basis voor het patroon van compenserende transacties in de grotere oplossingscontext.
Berichtsessies. Implementeer een grootschalige coördinatie van werkstromen en gemultiplexte overdrachten waarvoor strikte berichtordening of berichtuitstel vereist is.
Als u bekend bent met andere berichtenbrokers zoals Apache ActiveMQ, zijn Service Bus-concepten vergelijkbaar met wat u al kent. Omdat Service Bus een PaaS-product (Platform-as-a-Service) is, is een belangrijk verschil dat u zich geen zorgen hoeft te maken over de volgende acties. Azure voert deze taken voor u uit.
- Hardwarestoringen afhandelen
- Patches toepassen op de besturingssystemen of de producten
- Logboeken plaatsen en schijfruimte beheren
- Back-ups afhandelen
- Failover naar een reservecomputer uitvoeren
Concepten
In deze sectie worden de basisconcepten van Service Bus besproken.
Wachtrijen
Berichten worden verzonden naar en ontvangen van wachtrijen. Wachtrijen slaan berichten op totdat de ontvangende toepassing ze kan ontvangen en verwerken.
Berichten in wachtrijen worden bij ontvangst geordend en voorzien van een tijdstempel. Zodra de broker het bericht accepteert, wordt het bericht altijd permanent bewaard in drie redundante opslag, verspreid over beschikbaarheidszones als de naamruimte zone-ingeschakeld is. Service Bus bewaart berichten in het geheugen of vluchtige opslag totdat de client deze rapporteert als geaccepteerd.
Berichten worden bezorgd in pull-modus, waarbij berichten alleen op aanvraag worden geleverd. In tegenstelling tot het busy-pollingmodel van sommige andere cloudwachtrijen, kan de pull-bewerking lang duren en pas worden voltooid als er een bericht beschikbaar is.
Notitie
Zie Storage-wachtrijen en Service Bus-wachtrijen voor een vergelijking van Service Bus-wachtrijen met Opslagwachtrijen , vergeleken en gecontrast.
Onderwerpen
U kunt ook onderwerpen gebruiken voor het verzenden en ontvangen van berichten. Hoewel een wachtrij vaak wordt gebruikt voor punt-naar-punt-communicatie, zijn onderwerpen handig in scenario's voor publiceren/abonneren.
Onderwerpen kunnen meerdere, onafhankelijke abonnementen hebben, die aan het onderwerp worden gekoppeld en anders exact als wachtrijen van de ontvangerzijde werken. Een abonnee van een onderwerp kan een kopie ontvangen van elk bericht dat naar dat onderwerp wordt verzonden. Abonnementen worden entiteiten genoemd. Abonnementen duren standaard lang, maar kunnen worden geconfigureerd om te verlopen en vervolgens automatisch te worden verwijderd. Met de Java Message Service (JMS)-API kunt u met Service Bus Premium ook vluchtige abonnementen maken die bestaan voor de duur van de verbinding.
U kunt regels definiëren voor een abonnement. Een abonnementsregel bevat een filter om een voorwaarde te definiëren voor het bericht dat moet worden gekopieerd naar het abonnement en een optionele actie die metagegevens van berichten kan wijzigen. Zie Onderwerpfilters en acties voor meer informatie. Deze functie is handig in de volgende scenario's:
- U wilt niet dat een abonnement alle berichten ontvangt die naar een onderwerp worden gestuurd.
- U wilt berichten met extra metagegevens markeren wanneer deze via een abonnement worden doorgegeven.
Notitie
Zie Service Bus-wachtrijen, onderwerpen en abonnementen voor meer informatie over wachtrijen en onderwerpen.
Naamruimten
Een naamruimte is een container voor alle berichtenonderdelen (wachtrijen en onderwerpen). Een naamruimte kan een of meer wachtrijen en onderwerpen hebben en fungeert vaak als een toepassingscontainer.
Een naamruimte kan worden vergeleken met een server in de terminologie van andere brokers, maar de concepten zijn niet direct gelijkwaardig. Een Service Bus-naamruimte is uw eigen capaciteitssegment van een groot cluster dat uit tientallen allemaal actieve virtuele machines bestaat. Het omvat optioneel drie Azure-beschikbaarheidszones. Daarom krijgt u alle voordelen van beschikbaarheid en robuustheid van het uitvoeren van de berichtenbroker op een enorme schaal. En u hoeft zich geen zorgen te maken over de onderliggende complexiteiten. Service Bus is serverloze berichten.
Geavanceerde functies
Service Bus beschikt ook over geavanceerde functies waarmee u meer complexe problemen met berichtenuitwisseling kunt oplossen. In de volgende secties worden deze belangrijke functies in meer detail beschreven:
Berichtsessies
Gebruik sessies om een fifo (first-in, first-out) te realiseren bij het verwerken van berichten in Service Bus-wachtrijen of -abonnementen. Sessies kunnen ook worden gebruikt bij het implementeren van aanvraagresponspatronen. Met het aanvraagantwoordpatroon kan de afzendertoepassing een aanvraag verzenden en biedt de ontvanger een manier om een antwoord correct terug te sturen naar de afzendertoepassing. Zie Berichtensessies voor meer informatie.
Automatisch doorsturen
Met de functie voor automatisch doorsturen kunt u een wachtrij of abonnement koppelen aan een andere wachtrij of een ander onderwerp dat deel uitmaakt van dezelfde naamruimte. Wanneer automatisch doorsturen is ingeschakeld, worden berichten die in de eerste wachtrij of het eerste abonnement (bron) worden geplaatst, automatisch verwijdert en in de tweede wachtrij of het tweede onderwerp (doel) geplaatst. Zie Service Bus-entiteiten koppelen met automatisch doorsturen voor meer informatie
Verwerking van onbestelbare berichten
Service Bus-wachtrijen en onderwerpabonnementen bieden een secundair subqueue, een wachtrij met dode letters (DLQ) genoemd. De wachtrij met dode brieven bevat berichten die niet kunnen worden bezorgd bij een ontvanger of berichten die niet kunnen worden verwerkt. U kunt berichten in deze wachtrij vervolgens verwijderen en controleren. Een toepassing kan, met behulp van een operator, problemen corrigeren en het bericht opnieuw indienen, het feit dat er een fout is opgetreden vastleggen en een corrigerende actie ondernemen. Zie Overview of Service Bus dead-letter queues (Overzicht van Service Bus-wachtrijen voor onbestelbare berichten) voor meer informatie.
Geplande bezorging
U kunt berichten naar een wachtrij of onderwerp verzenden voor een vertraagde verwerking. Als u bijvoorbeeld wilt plannen dat een taak op een bepaald moment beschikbaar wordt voor verwerking door een systeem. Zie Geplande berichten voor meer informatie.
Berichten uitstellen
Wanneer een wachtrij- of abonnementsclient een bericht ontvangt dat het wil verwerken, maar waarvoor verwerking momenteel niet mogelijk is vanwege speciale omstandigheden binnen de toepassing, kan de entiteit het ophalen van het bericht naar een later tijdstip uitstellen. Het bericht blijft in de wachtrij of het abonnement staan, maar wordt nog niet verwerkt. Zie Berichten uitstellen voor meer informatie.
Transacties
Een transactie groepeert twee of meer bewerkingen in een uitvoeringsbereik. Service Bus biedt ondersteuning voor het groeperen van bewerkingen voor één berichtentiteit (wachtrij, onderwerp of abonnement) binnen het bereik van een transactie. Zie Overview of Service Bus transaction processing (Overzicht van transactieverwerking in Service Bus) voor meer informatie.
Filters en acties
Abonnees kunnen definiëren welke berichten ze willen ontvangen van een onderwerp. Deze berichten worden opgegeven in de vorm van een of meer benoemde abonnementsregels. Elke regel bestaat uit een filtervoorwaarde die bepaalde berichten selecteert en optioneel een actie bevat waarmee aantekeningen worden toegevoegd aan het geselecteerde bericht. Voor elke regelvoorwaarde waaraan wordt voldaan, produceert het abonnement een kopie van het bericht, dat voor elke overeenkomende regel anders kan worden geannoteerd. Zie Onderwerpfilters en acties voor meer informatie.
Automatische verwijderen bij inactiviteit
Automatische verwijderen bij inactiviteit houdt in dat u een interval voor inactiviteit kunt opgeven waarna de wachtrij automatisch wordt verwijderd. Het interval wordt opnieuw ingesteld wanneer er verkeer in de wachtrij is. De minimale duur is vijf minuten.
Duplicaatdetectie
Als er een fout optreedt die ervoor zorgt dat de client twijfelt over het resultaat van een verzendbewerking, wordt bij duplicaatdetectie de twijfel weggegooid door de afzender in staat te stellen hetzelfde bericht opnieuw te verzenden en worden eventuele dubbele kopieën verwijderd door de wachtrij of het onderwerp. Zie Detectie van duplicaten voor meer informatie.
Batch verwijderen van berichten
Azure Service Bus ondersteunt het verwijderen van berichten in batches. Dit is handig in scenario's waarin berichten in wachtrijen of abonnementen zijn verlopen, of niet meer relevant zijn, waarvoor een opschoonactie nodig is. Zie Batch verwijderen voor meer informatie.
Beveiliging
Service Bus ondersteunt beveiligingsprotocollen, zoals Shared Access Signatures (SAS), op rollen gebaseerd toegangsbeheer (RBAC) (RBAC) en beheerde identiteiten voor Azure-resources.
Service Bus ondersteunt standaardprotocollen Advanced Message Queuing Protocol (AMQP) 1.0 en HTTP/REST .
Geo-noodherstel
Wanneer er sprake is van uitval in Azure-regio's of -datacenters, zorgt Geo-noodherstel ervoor dat de gegevensverwerking kan plaatsvinden in een andere regio of in een ander datacenter.
Notitie
Zie Geavanceerde functies van Azure Service Bus voor meer informatie over deze functies.
Naleving van standaarden en protocollen
Het primaire wire-protocol voor Service Bus is Advanced Messaging Queueing Protocol (AMQP) 1.0, een open ISO/IEC-standaard. Hiermee kunnen klanten toepassingen schrijven die werken met Service Bus en on-premises brokers, zoals ActiveMQ of RabbitMQ. De AMQP-protocolhandleiding bevat gedetailleerde informatie voor het geval u een dergelijke abstractie wilt maken.
Service Bus Premium is volledig compatibel met de API van Java/Jakarta EE Java Message Service (JMS) 2.0. En Service Bus Standard biedt ondersteuning voor de JMS 1.1-subset die op wachtrijen gericht is. JMS is een algemene abstractie voor berichtenbrokers en kan worden geïntegreerd met veel toepassingen en frameworks, waaronder het populaire Spring-framework. Als u van een andere broker wilt overschakelen naar Azure Service Bus, hoeft u alleen de topologie van wachtrijen en onderwerpen opnieuw te maken en de afhankelijkheden en configuratie van de clientprovider te wijzigen. Zie de ActiveMQ-migratiehandleiding voor een voorbeeld.
Clientbibliotheken
Volledig ondersteunde Service Bus-clientbibliotheken zijn beschikbaar via de Azure SDK.
- Azure Service Bus voor .NET
- Frameworks van derden die abstracties op een hoger niveau bieden die op de SDK zijn gebouwd, zijn NServiceBus en MassTransit.
- Azure Service Bus-bibliotheken voor Java
- Azure Service Bus-provider voor Java JMS 2.0
- Azure Service Bus-modules voor JavaScript en TypeScript
- Azure Service Bus-bibliotheken voor Python
Het primaire protocol van Azure Service Bus is AMQP 1.0 en kan worden gebruikt vanuit elke client die compatibel is met het AMQP 1.0-protocol. Verschillende open source AMQP-clients bevatten voorbeelden die expliciet interoperabiliteit met Service Bus illustreren. Raadpleeg de AMQP 1.0-protocolhandleiding voor informatie over het rechtstreeks gebruik van Service Bus-functies met AMQP 1.0-clients.
Taal | Bibliotheek |
---|---|
Java | Apache Qpid Proton-J |
C/C++ | Azure uAMQP C, Apache Qpid Proton-C |
Python | Azure uAMQP voor Python, Apache Qpid Proton Python) |
PHP | Azure uAMQP voor 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 | Nandoe |
Integratie
Service Bus is volledig geïntegreerd met veel Microsoft- en Azure-services, bijvoorbeeld:
Volgende stappen
Zie de volgende artikelen om aan de slag te gaan met de Service Bus-berichtenservice: