Azure Service Bus – Vanliga frågor och svar

I den här artikeln beskrivs några vanliga frågor och svar om Microsoft Azure Service Bus. Du kan också besöka vanliga frågor och svar om Azure-support för allmän pris- och supportinformation om Azure.

Allmänna frågor om Azure Service Bus

Vad är Azure Service Bus?

Azure Service Bus är en asynkron molnplattform för meddelanden som gör att du kan skicka data mellan fristående system. Microsoft erbjuder den här funktionen som en tjänst, vilket innebär att du inte behöver vara värd för din egen maskinvara för att använda den.

Vad är ett Service Bus-namnområde?

Ett namnområde tillhandahåller en omfångscontainer för adressering av Service Bus-resurser i ditt program. Det är nödvändigt att skapa ett namnområde för att använda Service Bus och är ett av de första stegen för att komma igång.

Vad är en Azure Service Bus kö?

En Service Bus-kö är en entitet där meddelanden lagras. Köer är användbara när du har flera program eller flera delar av ett distribuerat program som behöver kommunicera med varandra. Kön liknar ett distributionscenter eftersom flera produkter (meddelanden) tas emot och sedan skickas från den platsen.

Vad är Azure Service Bus ämnen och prenumerationer?

Ett ämne kan visualiseras som en kö och när du använder flera prenumerationer blir det en mer omfattande meddelandemodell. i stort sett ett en-till-många-kommunikationsverktyg. Med den här modellen för publicering/prenumeration (eller pub/sub) kan ett program som skickar ett meddelande till ett ämne med flera prenumerationer få meddelandet mottaget av flera program.

Vad är en partitionerad entitet?

En konventionell kö eller ett ämne hanteras av en enda meddelandekö och lagras i ett meddelandearkiv. En partitionerad kö eller ett ämne hanteras av flera meddelandeköer och lagras i flera meddelandearkiv. Den här funktionen innebär att det totala dataflödet för en partitionerad kö eller ett ämne inte längre begränsas av prestanda för en enda meddelandekö eller ett meddelandearkiv. Ett tillfälligt avbrott i ett meddelandearkiv gör inte heller en partitionerad kö eller ett ämne otillgängligt.

Ordningen säkerställs inte när du använder partitionerade entiteter. Om en partition inte är tillgänglig kan du fortfarande skicka och ta emot meddelanden från de andra partitionerna.

Var lagrar Azure Service Bus data?

Azure Service Bus standardnivån använder SQL do Azure Database för lagringsskiktet på serverdelen. För alla regioner utom Brasilien, södra och Sydostasien finns databassäkerhetskopian i en annan region (vanligtvis den länkade Azure-regionen). För regionerna Brasilien, södra och Sydostasien lagras databassäkerhetskopior i samma region för att tillgodose kraven på datahemvist för dessa regioner.

Azure Service Bus premiumnivå lagrar metadata och data i regioner som du väljer. När geo-haveriberedskap har konfigurerats för ett Azure Service Bus Premium-namnområde kopieras metadata till den sekundära region som du väljer.

Vilka portar måste jag öppna i brandväggen?

Du kan använda följande protokoll med Azure Service Bus för att skicka och ta emot meddelanden:

  • Advanced Message Queuing Protocol 1.0 (AMQP)
  • Hypertext Transfer Protocol 1.1 med TLS (HTTPS)

Se följande tabell för de utgående TCP-portar som du behöver öppna för att använda dessa protokoll för att kommunicera med Azure Service Bus:

Protokoll Portar Information
AMQP 5671, 5672 AMQP med TLS. Se AMQP-protokollguiden
HTTPS 443 Den här porten används för HTTP/REST API och för AMQP-over-WebSockets

HTTPS-porten krävs vanligtvis för utgående kommunikation även när AMQP används via port 5671, eftersom flera hanteringsåtgärder som utförs av klient-SDK:er och förvärv av token från Azure Active Directory (när det används) körs via HTTPS.

De officiella Azure SDK:erna använder vanligtvis AMQP-protokollet för att skicka och ta emot meddelanden från Service Bus.

Protokollalternativet AMQP-over-WebSockets körs via port TCP 443 precis som HTTP/REST API, men är i övrigt funktionellt identiskt med vanlig AMQP. Det här alternativet har högre inledande anslutningsfördröjning på grund av extra tur och retur för handskakning och något mer omkostnader som kompromiss för att dela HTTPS-porten. Om det här läget är valt räcker det med TCP-port 443 för kommunikation. Med följande alternativ kan du välja AMQP WebSockets-läge.

Språk Alternativ
.NET (Azure.Messaging.ServiceBus) Skapa ServiceBusClient med hjälp av en konstruktor som tar ServiceBusClientOptions som parameter. Ange ServiceBusClientOptions.TransportType till ServiceBusTransportType.AmqpWebSockets
.NET (Microsoft.Azure.ServiceBus) När du skapar klientobjekt använder du konstruktorer som använder TransportType, ServiceBusConnection eller ServiceBusConnectionStringBuilder som parametrar.

För konstruktionen som tar transportType som en parameter anger du parametern till TransportType.AmqpWebSockets.

För konstruktorn som tar ServiceBusConnection som parameter anger du ServiceBusConnection.TransportType till TransportType.AmqpWebSockets.

Om du använder ServiceBusConnectionStringBuilderanvänder du konstruktorer som ger dig möjlighet att ange transportType.

Java (com.azure.messaging.servicebus) När du skapar klienter anger du ServiceBusClientBuilder.transportType till AmqpTransportType.AMQP.AMQP_WEB_SOCKETS
Java (com.microsoft.azure.servicebus) När du skapar klienter anger du transportType i com.microsoft.azure.servicebus.ClientSettings till com.microsoft.azure.servicebus.primitives.TransportType.AMQP_WEB_SOCKETS
JavaScript När du skapar Service Bus-klientobjekt använder du webSocketOptions egenskapen i ServiceBusClientOptions.
Python När du skapar Service Bus-klienter anger du ServiceBusClient.transport_type till TransportType.AmqpOverWebSocket

Vilka IP-adresser behöver jag lägga till i listan över tillåtna adresser?

Följ dessa steg för att hitta rätt IP-adresser att lägga till i listan över tillåtna anslutningar:

  1. Kör följande kommando från en kommandotolk:

    nslookup <YourNamespaceName>.servicebus.windows.net
    
  2. Anteckna IP-adressen som returnerades i Non-authoritative answer.

Om du använder zonredundansen för ditt namnområde måste du utföra några ytterligare steg:

  1. Först kör du nslookup på namnområdet.

    nslookup <yournamespace>.servicebus.windows.net
    
  2. Anteckna namnet i avsnittet icke-auktoritativt svar , som har något av följande format:

    <name>-s1.cloudapp.net
    <name>-s2.cloudapp.net
    <name>-s3.cloudapp.net
    
  3. Kör nslookup för var och en med suffixen s1, s2 och s3 för att hämta IP-adresserna för alla tre instanser som körs i tre tillgänglighetszoner.

    Anteckning

    IP-adressen som returneras av nslookup kommandot är inte en statisk IP-adress. Den förblir dock konstant tills den underliggande distributionen tas bort eller flyttas till ett annat kluster.

Var hittar jag IP-adressen för klienten som skickar/tar emot meddelanden till/från ett namnområde?

Vi loggar inte IP-adresserna för klienter som skickar eller tar emot meddelanden till/från ditt namnområde. Återskapa nycklar så att alla befintliga klienter inte kan autentisera och granska azure-inställningarna för rollbaserad åtkomstkontroll (Azure RBAC) för att säkerställa att endast tillåtna användare eller program har åtkomst till namnområdet.

Om du använder ett premiumnamnområde använder du IP-filtrering, tjänstslutpunkter för virtuellt nätverk och privata slutpunkter för att begränsa åtkomsten till namnområdet.

Bästa praxis

Vilka är några Azure Service Bus bästa praxis?

Se Metodtips för prestandaförbättringar med Service Bus – den här artikeln beskriver hur du optimerar prestanda vid utbyte av meddelanden.

Vad bör jag veta innan jag skapar entiteter?

Följande egenskaper för en kö och ett ämne är oföränderliga. Tänk på den här begränsningen när du etablerar dina entiteter eftersom dessa egenskaper inte kan ändras utan att skapa en ny ersättningsentitet.

  • Partitionering
  • Sessioner
  • Dubblettidentifiering
  • Express-entitet

Prissättning

Det här avsnittet besvarar några vanliga frågor om prisstrukturen för Service Bus.

Pris - och faktureringsartikeln för Service Bus beskriver faktureringsmätaren i Service Bus. Specifik information om prisalternativ för Service Bus finns i Prisinformation för Service Bus.

Du kan också gå till vanliga frågor och svar om Azure-support för allmän prisinformation om Azure.

Hur debiterar du för Service Bus?

Fullständig information om Service Bus-priser finns i Prisinformation för Service Bus. Förutom de priser som anges debiteras du för associerade dataöverföringar för utgående trafik utanför det datacenter där ditt program etableras.

Vilken användning av Service Bus är föremål för dataöverföring? Vad är det inte?

All dataöverföring inom en viss Azure-region tillhandahålls utan kostnad, samt eventuell inkommande dataöverföring. Dataöverföring utanför en region debiteras för utgående avgifter, som du hittar här.

Debiteras Service Bus för lagring?

Nej. Service Bus debiterar inte för lagring. Det finns dock en kvot som begränsar den maximala mängden data som kan sparas per kö/ämne. Se nästa vanliga frågor och svar.

Jag har ett Service Bus Standard-namnområde. Varför visas avgifter under resursgruppen "$system"?

Azure Service Bus nyligen uppgraderat faktureringskomponenterna. Om du har ett Service Bus Standard-namnområde kan du på grund av den här ändringen se radobjekt för resursen '/subscriptions/<azure_subscription_id>/resourceGroups/$system/providers/Microsoft. ServiceBus/namespaces/$system" under resursgruppen "$system".

Dessa avgifter representerar basavgiften per Azure-prenumeration som har etablerat ett Service Bus Standard-namnområde.

Det är viktigt att notera att dessa avgifter inte är nya, dvs. de fanns även i den tidigare faktureringsmodellen. Den enda ändringen är att de nu visas under "$system". Det görs på grund av begränsningar i det nya faktureringssystemet som grupperar avgifter på prenumerationsnivå, som inte är knutna till en specifik resurs, under resurs-ID:t "$system".

Kvoter

En lista över Gränser och kvoter för Service Bus finns i översikten över Service Bus-kvoter.

Hur hanterar jag meddelanden med storleken > 1 MB?

Med Service Bus-meddelandetjänster (köer och ämnen/prenumerationer) kan programmet skicka meddelanden med en storlek på upp till 256 kB (standardnivå) eller 100 MB (premiumnivå). Om du hanterar meddelanden med större storlek än den tillåtna storleken använder du anspråkskontrollmönstret som beskrivs i det här blogginlägget.

Felsökning

Varför kan jag inte skapa ett namnområde när jag har raderat det från en annan prenumeration?

När du tar bort ett namnområde från en prenumeration väntar du i 4 timmar innan du återskapar det med samma namn i en annan prenumeration. Annars kan du få följande felmeddelande: Namespace already exists.

Vilka undantag genereras av Azure Service Bus-API:er och deras föreslagna åtgärder?

En lista över möjliga Service Bus-undantag finns i Undantagsöversikt.

Vad är en signatur för delad åtkomst och vilka språk stöder generering av en signatur?

Signaturer för delad åtkomst är en autentiseringsmekanism som baseras på SHA-256 säkra hashvärden eller URI:er. Information om hur du genererar egna signaturer i Node.js, PHP, Java, Python och C# finns i artikeln Signaturer för delad åtkomst .

Hantering av prenumerationer och namnområden

如何实现 migrera ett namnområde till en annan Azure-prenumeration?

Du kan flytta ett namnområde från en Azure-prenumeration till en annan med hjälp av kommandona Azure-Portal eller PowerShell. Om du vill köra åtgärden måste namnområdet redan vara aktivt. Användaren som kör kommandona måste vara administratör för både käll- och målprenumerationerna.

Portalen

Följ anvisningarna här om du vill använda Azure-Portal för att migrera Service Bus-namnområden till en annan prenumeration.

PowerShell

Följande sekvens med PowerShell-kommandon flyttar ett namnområde från en Azure-prenumeration till en annan. Om du vill köra den här åtgärden måste namnområdet redan vara aktivt och användaren som kör PowerShell-kommandona måste vara administratör för både käll- och målprenumerationerna.

# Create a new resource group in target subscription
Select-AzSubscription -SubscriptionId 'ffffffff-ffff-ffff-ffff-ffffffffffff'
New-AzResourceGroup -Name 'targetRG' -Location 'East US'

# Move namespace from source subscription to target subscription
Select-AzSubscription -SubscriptionId 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'
$res = Find-AzResource -ResourceNameContains mynamespace -ResourceType 'Microsoft.ServiceBus/namespaces'
Move-AzResource -DestinationResourceGroupName 'targetRG' -DestinationSubscriptionId 'ffffffff-ffff-ffff-ffff-ffffffffffff' -ResourceId $res.ResourceId

Går det att inaktivera TLS 1.0 eller 1.1 på Service Bus-namnområden?

Ja, du kan inaktivera TLS 1.0 eller 1.1 på Service Bus-namnområden genom att ange den lägsta TLS-versionen. Mer information finns i Framtvinga en lägsta version av TLS (Transport Layer Security) för begäranden till ett Service Bus-namnområde.

Nästa steg

Mer information om Service Bus finns i följande artiklar: