Dela via


Vad är Azure Service Bus?

Azure Service Bus är en fullständigt hanterad företagsmeddelandeförmedlare med meddelandeköer och publicera-prenumerera-ämnen. Använd Service Bus för att frikoppla program och tjänster från varandra. Den ger följande fördelar:

  • Belastningsutjämningar mellan konkurrerande arbetare
  • Dirigerar och överför data och kontroll över tjänst- och programgränser på ett säkert sätt
  • Samordnar transaktionsarbete som kräver hög tillförlitlighet

Overview

Program och tjänster överför data mellan varandra med hjälp av meddelanden. Ett meddelande är en container som innehåller data och är dekorerad med metadata. Data kan vara alla typer av information, inklusive strukturerade data som kodas med vanliga format som JSON, XML, Apache Avro eller oformaterad text.

Några vanliga meddelandescenarier är:

  • Messaging. Överföra affärsdata, till exempel försäljnings- eller inköpsorder, journaler eller lagerförflyttningar.

  • Frikoppla program. Förbättra tillförlitligheten och skalbarheten för program och tjänster. Producent och konsument behöver inte vara online eller lättillgängliga på samma gång. Belastningen utjämnas så att trafiktoppar inte överbeskattar en tjänst.

  • Belastningsutjämning. Tillåt att flera konkurrerande konsumenter läser från en kö samtidigt, var och en får exklusivt ägande till specifika meddelanden på ett säkert sätt.

  • Ämnen och prenumerationer. Aktivera 1:n-relationer mellan utgivare och prenumeranter, så att prenumeranter kan välja vissa meddelanden från en publicerad meddelandeström.

  • Transactions. Utför flera åtgärder, allt inom omfånget för en atomisk transaktion. Följande åtgärder kan till exempel utföras i omfånget för en transaktion:

    1. Hämta ett meddelande från en kö.
    2. Publicera resultatet av bearbetningen till en eller flera olika köer.
    3. Flytta meddelandeinmatningen från originalkön.

    Resultaten blir synliga för nedströmskonsumenter endast när de lyckas, inklusive en lyckad lösning av indatameddelandet, vilket möjliggör bearbetning av semantik endast en gång. Den här transaktionsmodellen är en robust grund för det kompenserande transaktionsmönstret i den större lösningskontexten.

  • Meddelandesessioner. Implementera storskalig samordning av arbetsflöden och multiplexerade överföringar som kräver strikt meddelandeordning eller meddelandeuppsägning.

Om du är bekant med andra meddelandemäklare som Apache ActiveMQ, är Service Bus-koncepten liknande de du redan känner till. Eftersom Service Bus är ett PaaS-erbjudande (plattform som en tjänst) är en viktig skillnad att du inte behöver oroa dig för följande åtgärder. Azure tar hand om de här sysslorna åt dig.

  • Oroa dig för maskinvarufel
  • Hålla operativsystemen eller produkterna korrigerade
  • Placera loggar och hantera diskutrymme
  • Hantera säkerhetskopior
  • Växla över till en reservdator

Koncept

I det här avsnittet beskrivs grundläggande begrepp för Service Bus.

Queues

Du skickar och tar emot meddelanden via köer. Köer lagrar meddelanden tills det mottagande programmet är tillgängligt för att ta emot och bearbeta dem.

Diagram som visar en Service Bus-kö med en avsändare och en mottagare som skickar och tar emot meddelanden.

Meddelanden i köer ordnas och tidsstämplas vid ankomst. När mäklaren har accepterat meddelandet, hålls det alltid hållbart i trefaldig redundanslagring, fördelad över tillgänglighetszoner om namnområdet är zonaktiverat. Service Bus behåller meddelanden i minne eller flyktig lagring tills klienten rapporterar dem som godkända.

Meddelanden levereras i pull-läge , så systemet levererar bara meddelanden när det begärs. Till skillnad från modellen med upptagen avsökning i vissa andra molnköer kan pull-åtgärden vara långlivad och slutförs bara när ett meddelande är tillgängligt.

Note

En jämförelse av Service Bus-köer med lagringsköer finns i Lagringsköer och Service Bus-köer – jämförda och kontrasterade.

Ämnen

Du kan också använda ämnen för att skicka och ta emot meddelanden. En kö används ofta för punkt-till-punkt-kommunikation, men ämnen är användbara i scenarier med publicering och prenumeration.

Diagram som visar ett Service Bus-ämne med en avsändare och flera mottagare.

Ämnen kan ha flera oberoende prenumerationer. De här prenumerationerna kopplas till ämnet och fungerar i övrigt precis som köer från mottagarsidan. En prenumerant på ett ämne kan ta emot en kopia av varje meddelande som skickas till det ämnet. Prenumerationer är namngivna entiteter. Prenumerationer är varaktiga som standard, men du kan konfigurera dem så att de upphör att gälla och sedan tas bort automatiskt. Via Java Message Service-API:et (JMS) kan du med Service Bus Premium också skapa flyktiga prenumerationer som finns under anslutningens varaktighet.

Du kan definiera regler för en prenumeration. En prenumerationsregel har ett filter för att definiera ett villkor för att meddelandet ska kopieras till prenumerationen och en valfri åtgärd som kan ändra meddelandemetadata. Mer information finns i Ämnesfilter och åtgärder. Den här funktionen är användbar i följande scenarier:

  • Du vill inte att en prenumeration ska ta emot alla meddelanden som skickas till ett ämne.
  • Du vill markera meddelanden med extra metadata när de skickas via en prenumeration.

Note

Mer information om köer och ämnen finns i Service Bus-köer, ämnen och prenumerationer.

Namespaces

Ett namnområde är en container för alla meddelandekomponenter, till exempel köer och ämnen. Ett namnområde kan ha en eller flera köer och ämnen, och det fungerar ofta som en programcontainer.

Du kan jämföra ett namnområde med en server i terminologin för andra mäklare, men begreppen är inte direkt likvärdiga. Ett Service Bus-namnområde är din egen kapacitetssektor i ett stort kluster som består av dussintals helt aktiva virtuella datorer. Det omfattar även tre Azure-tillgänglighetszoner. Du får fördelarna med tillgänglighet och robusthet när du kör meddelandekoordinatorn i enorm skala. Och du behöver inte oroa dig för underliggande komplexitet. Service Bus är en serverlös meddelandetjänst.

Avancerade funktioner

Service Bus har också avancerade funktioner som gör att du kan lösa mer komplexa meddelandeproblem. Följande avsnitt beskriver dessa viktiga funktioner:

Meddelandesessioner

Använd sessioner för att förverkliga en första-i-först-ut-garanti (FIFO) för att bearbeta meddelanden i Service Bus-köer eller prenumerationer. Du kan också använda sessioner för att implementera mönster för begärandesvar. Mönstret för begäran-svar gör det möjligt för avsändarprogrammet att skicka en begäran och ger ett sätt för mottagaren att skicka ett svar tillbaka till avsändarprogrammet. Mer information finns i Meddelandesessioner.

Automatisk Vidarebefordran

Med funktionen autoforwarding kan du länka en kö eller prenumeration till en annan kö eller ett annat ämne som ingår i samma namnområde. När du aktiverar automatisk vidarebefordran tar Service Bus automatiskt bort meddelanden som placeras i den första kön eller prenumerationen (källa) och placerar dem i den andra kön eller topic (mål). Mer information finns i Koppla samman Service Bus-entiteter med autoforwarding.

Hantering av icke-levererbara meddelanden

Service Bus-köer och ämnesprenumerationer tillhandahåller en sekundär underfråga, kallad en kö med obeställbara meddelanden (DLQ). Kön med obeställbara meddelanden innehåller meddelanden som inte kan levereras till någon mottagare eller meddelanden som inte kan bearbetas. Du kan sedan ta bort meddelanden från DLQ och inspektera dem. Ett program kan med hjälp av en operatör korrigera problem och skicka meddelandet igen, logga det faktum att det uppstod ett fel och vidta en korrigerande åtgärd. För mer information, se Översikt över Service Bus dödbrevköer.

Schemalagd leverans

Du kan skicka meddelanden till en kö eller ett ämne för fördröjd bearbetning. Om du till exempel vill schemalägga ett jobb så att det blir tillgängligt för bearbetning av ett system vid en viss tidpunkt. Mer information finns i Schemalagda meddelanden.

Uppskjutning av meddelanden

När en kö- eller prenumerationsklient får ett meddelande som den är villig att bearbeta, men bearbetning för närvarande inte är möjlig på grund av särskilda omständigheter i programmet, kan entiteten skjuta upp hämtningen av meddelandet till en senare tidpunkt. Meddelandet finns kvar i kön eller prenumerationen, men det har lagts åt sidan. Mer information finns i Meddelandeförsening.

Transaktioner

En transaktion grupperar två eller flera åtgärder i en exekveringsram. Service Bus stöder grupperingsåtgärder mot en enda meddelandeentitet (kö, ämne, prenumeration) inom en transaktions omfång. Mer information finns i Översikt över Service Bus-transaktionsbearbetning.

Filter och åtgärder

Prenumeranter kan definiera vilka meddelanden som de vill ta emot från ett ämne. Dessa meddelanden anges i form av en eller flera namngivna prenumerationsregler. Varje regel består av ett filtervillkor som väljer specifika meddelanden och som eventuellt innehåller en åtgärd som kommenterar det valda meddelandet. För varje matchande regelvillkor skapar prenumerationen en kopia av meddelandet, som kan kommenteras olika för varje matchande regel. Mer information finns i Ämnesfilter och åtgärder.

Automatisk borttagning vid inaktivitet

Genom att använda Automatisk borttagning vid inaktivitet kan du ange ett inaktivt intervall varefter kön tas bort automatiskt. Intervallet återställs när det finns trafik i kön. Den minsta varaktigheten är fem minuter.

Dubblettidentifiering

Om ett fel inträffar som gör att klienten tvivlar på resultatet av en sändningsåtgärd, eliminerar duplicerad identifiering tvivel i dessa situationer. Avsändaren kan skicka samma meddelande igen, och kön eller topic tar bort alla duplicerade kopior. Mer information finns i Dubblettidentifiering.

Massborttagning av meddelanden

Azure Service Bus stöder borttagning av meddelanden i batchar. Den här funktionen är användbar när meddelanden i köer eller prenumerationer upphör att gälla eller inte längre är relevanta, vilket kräver en rensning. För mer information, se Partiell radering.

Säkerhet

Service Bus stöder säkerhetsprotokoll som signaturer för delad åtkomst (SAS),rollbaserad åtkomstkontroll (RBAC) och hanterade identiteter för Azure-resurser.

Service Bus har stöd för AMQP-protokoll (Advanced Message Queuing Protocol) 1.0 och HTTP/REST .

Geo-Replication

När Azure-regioner eller datacenter upplever driftstopp kan geo-replikering göra det möjligt för databearbetning att fortsätta att fungera i en annan region.

Note

Mer information om dessa funktioner finns i Avancerade funktioner i Azure Service Bus.

Efterlevnad av standarder och protokoll

Det primära trådprotokollet för Service Bus är AMQP (Advanced Messaging Queueing Protocol) 1.0, en öppen ISO/IEC-standard. Det gör det möjligt för kunder att skriva program som fungerar mot Service Bus och lokala mäklare som ActiveMQ eller RabbitMQ. AMQP-protokollguiden innehåller detaljerad information om du vill skapa en sådan abstraktion.

Service Bus Premium är helt kompatibelt med Java/Jakarta EE Java Message Service (JMS) 2.0 API. Och Service Bus Standard stöder JMS 1.1-delmängden med fokus på köer. JMS är en vanlig abstraktion för meddelandeköer och integreras med många program och ramverk, inklusive det populära Spring-ramverket. Om du vill växla från andra koordinatorer till Azure Service Bus behöver du bara återskapa topologin för köer och ämnen och ändra klientproviderns beroenden och konfiguration. Ett exempel finns i migreringsguiden för ActiveMQ.

Klientbibliotek

Fullt stödda Service Bus-klientbibliotek finns tillgängliga via Azure SDK.

Azure Service Bus primära protokoll är AMQP 1.0 och kan användas från alla AMQP 1.0-kompatibla protokollklienter. Flera AMQP-klienter med öppen källkod har exempel som uttryckligen visar Service Bus-samverkan. Läs protokollguiden för AMQP 1.0 för att förstå hur du använder Service Bus-funktioner med AMQP 1.0-klienter direkt.

Språk bibliotek
Java Apache Qpid Proton-J
C/C++ Azure uAMQP C, Apache Qpid Proton-C
Python Apache Qpid Proton Python
Ruby Apache Qpid Proton Ruby
Kör Azure Go AMQP, Apache Qpid Proton Go
C#/F#/VB AMQP .NET Lite, Apache NMS AMQP
JavaScript/Node Rhea

Integration

Service Bus integreras fullständigt med många Microsoft- och Azure-tjänster, till exempel:

Nästa steg

Information om hur du kommer igång med Service Bus-meddelanden finns i följande artiklar: