Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här snabbstarten innehåller stegvisa instruktioner för ett enkelt scenario med att skicka meddelanden till en Service Bus-kö och ta emot dem. I den här snabbstarten slutför du följande uppgifter:
Skapa ett Service Bus-namnområde med Azure Portal.
Skapa en Service Bus-kö med Azure Portal.
Skriv ett JavaScript-program för att använda paketet @azure/service-bus för att:
- Skicka en uppsättning meddelanden till kön.
- Ta emot dessa meddelanden från kön.
Du hittar fördefinierade JavaScript- och TypeScript-exempel för Azure Service Bus i Azure SDK för JavaScript-lagringsplatsen på GitHub.
Om du är nybörjare på tjänsten kan du läsa Översikt över Service Bus innan du börjar.
Förutsättningar
En Azure-prenumeration För att slutföra den här snabbstarten behöver du ett Azure-konto. Du kan aktivera dina månatliga Azure-krediter för Visual Studio-prenumeranter eller registrera dig för ett kostnadsfritt konto.
Så här använder du den här snabbstarten med ditt eget Azure-konto:
- Installera Azure CLI, som tillhandahåller lösenordslös autentisering till utvecklardatorn.
- Logga in med ditt Azure-konto i en kommandotolk med
az login. - Använd samma konto när du lägger till lämplig dataroll i resursen.
- Kör koden i samma kommandotolkfönster.
- Anteckna könamnet för Service Bus-namnområdet. Du behöver det i koden.
Kommentar
Den här självstudien fungerar med exempel som du kan kopiera och köra med Nodejs. Anvisningar om hur du skapar ett Node.js-program finns i Skapa och distribuera ett Node.js-program till en Azure-webbplats eller Node.js molntjänst med Windows PowerShell.
Skapa ett namnområde i Azure Portal
Om du vill börja använda Service Bus-meddelandeentiteter i Azure skapar du ett namnområde med ett namn som är unikt i Hela Azure. Ett namnområde tillhandahåller en omfångscontainer för Service Bus-resurser, till exempel köer och ämnen, i ditt program.
Så här skapar du ett namnområde:
Logga in på Azure-portalen.
Välj den utfällbara menyn längst upp till vänster och gå till sidan Alla tjänster.
I det vänstra navigeringsfältet väljer du Integrering.
Rulla ned till Messaging Services>Service Bus och välj Skapa.
Följ dessa steg på fliken Grundläggande på sidan Skapa namnområde :
För Prenumeration väljer du en Azure-prenumeration där du ska skapa namnrymden.
För Resursgrupp väljer du en befintlig resursgrupp eller skapar en ny.
Ange ett namnområdesnamn som uppfyller följande namngivningskonventioner:
- Namnet måste vara unikt i Hela Azure. Systemet kontrollerar omedelbart om namnet är tillgängligt.
- Namnlängden är minst 6 och högst 50 tecken.
- Namnet får endast innehålla bokstäver, siffror, bindestreck
-. - Namnet måste börja med en bokstav och sluta med en bokstav eller siffra.
- Namnet slutar inte med
-sbeller-mgmt.
För Plats väljer du den region som ska vara värd för ditt namnområde.
För Prisnivå väljer du prisnivån (Basic, Standard eller Premium) för namnområdet. För den här snabbstarten väljer du Standard.
Om du väljer Premium-nivå kan du aktivera geo-replikering för namnområdet. Geo-replikeringsfunktionen säkerställer att metadata och data i ett namnområde kontinuerligt replikeras från en primär region till en eller flera sekundära regioner.
Viktigt!
Om du vill använda ämnen och prenumerationer väljer du antingen Standard eller Premium. Ämnen och prenumerationer stöds inte på prisnivån Basic.
Om du har valt prisnivån Premium anger du antalet meddelandeenheter. Premium-nivån ger resursisolering på processor- och minnesnivå så att varje arbetsbelastning körs självständigt. Den här resurscontainern kallas för en meddelandefunktionsenhet. Ett premiumnamnområde har minst en meddelandeenhet. Du kan välja 1, 2, 4, 8 eller 16 meddelandeenheter för varje Service Bus Premium-namnområde. Mer information finns i Service Bus Premium-meddelandenivån.
Välj Granska + skapa längst ned på sidan.
På sidan Granska + skapa granskar du inställningarna och väljer Skapa.
När distributionen av resursen har slutförts väljer du Gå till resurs på distributionssidan.
Startsidan för din Service Bus-namnrymd visas.
Skapa en kö i Azure-portalen
På sidan Service Bus-namnområde expanderar du Entiteter på navigeringsmenyn till vänster och väljer Köer.
På sidan Köer, i verktygsfältet väljer du + Kö.
Ange ett namn för kön. Lämna de andra värdena med sina standardvärden.
Välj Skapa.
Autentisera appen till Azure
Den här artikeln visar två sätt att ansluta till Azure Service Bus: lösenordslös och anslutningssträng.
Det första alternativet visar hur du använder ditt säkerhetsobjekt i Microsoft Entra-ID och rollbaserad åtkomstkontroll (RBAC) för att ansluta till ett Service Bus-namnområde. Du behöver inte bekymra dig om att ha en hårdkodad anslutningssträng i koden, i en konfigurationsfil eller i en säker lagring som Azure Key Vault.
Det andra alternativet visar hur du använder en anslutningssträng för att ansluta till ett Service Bus-namnområde. Om du inte har använt Azure tidigare kan det vara enklare att följa anslutningssträng alternativet. Vi rekommenderar att du använder det lösenordslösa alternativet i verkliga program och produktionsmiljöer. Mer information finns i Service Bus-autentisering och auktorisering. Mer information om lösenordslös autentisering finns i Autentisera .NET-appar.
Tilldela roller till din Microsoft Entra-användare
När du utvecklar lokalt kontrollerar du att användarkontot som ansluter till Azure Service Bus har rätt behörigheter. Du behöver rollen Azure Service Bus-dataägare för att kunna skicka och ta emot meddelanden. Om du vill tilldela dig själv den här rollen behöver du rollen Administratör för användaråtkomst eller en annan roll som innehåller åtgärden Microsoft.Authorization/roleAssignments/write .
Du kan tilldela Azure RBAC-roller till en användare med hjälp av Azure Portal, Azure CLI eller Azure PowerShell. Mer information om tillgängliga omfång för rolltilldelningar finns i Förstå omfånget för Azure RBAC.
I följande exempel tilldelas Azure Service Bus Data Owner rollen till ditt användarkonto, vilket ger fullständig åtkomst till Azure Service Bus-resurser. I ett verkligt scenario följer du principen om minsta behörighet för att ge användarna endast de minsta behörigheter som krävs för en säkrare produktionsmiljö.
Inbyggda Azure-roller för Azure Service Bus
För Azure Service Bus skyddas redan hanteringen av namnområden och alla relaterade resurser via Azure Portal och Azure-resurshanterings-API:et med hjälp av Azure RBAC-modellen. Azure tillhandahåller följande inbyggda Azure-roller för att auktorisera åtkomst till ett Service Bus-namnområde:
- Azure Service Bus-dataägare: Ger dataåtkomst till Service Bus-namnområdet och dess entiteter, inklusive köer, ämnen, prenumerationer och filter. En medlem i den här rollen kan skicka och ta emot meddelanden från köer eller ämnen/prenumerationer.
-
Azure Service Bus-datasändare: Använd den här rollen för att ge
sendåtkomst till Service Bus-namnområdet och dess entiteter. -
Azure Service Bus-datamottagare: Använd den
receivehär rollen för att ge åtkomst till Service Bus-namnområdet och dess entiteter.
Om du vill skapa en anpassad roll läser du Rättigheter som krävs för Service Bus-åtgärder.
Lägga till Microsoft Entra-användare i rollen Som Azure Service Bus-ägare
Lägg till ditt Microsoft Entra-användarnamn i rollen Azure Service Bus-dataägare på Service Bus-namnområdesnivå. Med den här konfigurationen kan en app som körs i kontexten för ditt användarkonto skicka meddelanden till en kö eller ett ämne. Den kan ta emot meddelanden från en kö eller ett ämnesprenumeration.
Viktigt!
I de flesta fall tar det en minut eller två för rolltilldelningen att spridas i Azure. I sällsynta fall kan det ta upp till åtta minuter. Om du får autentiseringsfel när du först kör koden väntar du en stund och försöker igen.
Om du inte har sidan Service Bus-namnområde öppen i Azure Portal letar du upp Service Bus-namnområdet med hjälp av huvudsökfältet eller det vänstra navigeringsfältet.
På sidan Översikt väljer du Åtkomstkontroll (IAM) på den vänstra menyn.
På sidan Åtkomstkontroll (IAM) väljer du fliken Rolltilldelningar .
Välj + Lägg till på den översta menyn och sedan Lägg till rolltilldelning.
Använd sökrutan för att filtrera resultatet till önskad roll. I det här exemplet söker
Azure Service Bus Data Ownerdu efter och väljer matchande resultat. Välj sedan Nästa.Under Tilldela åtkomst till väljer du Användare, grupp eller tjänstens huvudnamn och sedan + Välj medlemmar.
I dialogrutan söker du efter ditt Microsoft Entra-användarnamn (vanligtvis din user@domain e-postadress) och väljer sedan Välj längst ned i dialogrutan.
Välj Granska + tilldela för att gå till den sista sidan och sedan Granska + tilldela igen för att slutföra processen.
Installera paketet med NPM (Node Package Manager)
För att installera nödvändiga npm-paket för Service Bus, öppna ett kommandotolkfönster där
npmfinns med i systemets PATH och ändra katalogen till den mapp där du vill ha dina exempel.Installera följande paket:
npm install @azure/service-bus @azure/identity
Skicka meddelanden till en kö
Följande exempelkod visar hur du skickar ett meddelande till en kö.
Logga in med Azure CLI-kommandot az login för din lokala dator för att tillhandahålla den lösenordslösa autentisering som krävs i den här koden.
Öppna en textredigerare, till exempel Visual Studio Code.
Skapa en fil med namnet
send.jsoch klistra in följande kod i den. Den här koden skickar namnen på forskare som meddelanden till din kö.Viktigt!
Den lösenordslösa autentiseringsuppgiften tillhandahålls med hjälp av StandardAzureCredential.
const { ServiceBusClient } = require("@azure/service-bus"); const { DefaultAzureCredential } = require("@azure/identity"); // Replace `<SERVICE-BUS-NAMESPACE>` with your namespace const fullyQualifiedNamespace = "<SERVICE-BUS-NAMESPACE>.servicebus.windows.net"; // Passwordless credential const credential = new DefaultAzureCredential(); // name of the queue const queueName = "<QUEUE NAME>" const messages = [ { body: "Albert Einstein" }, { body: "Werner Heisenberg" }, { body: "Marie Curie" }, { body: "Steven Hawking" }, { body: "Isaac Newton" }, { body: "Niels Bohr" }, { body: "Michael Faraday" }, { body: "Galileo Galilei" }, { body: "Johannes Kepler" }, { body: "Nikolaus Kopernikus" } ]; async function main() { // create a Service Bus client using the passwordless authentication to the Service Bus namespace const sbClient = new ServiceBusClient(fullyQualifiedNamespace, credential); // createSender() can also be used to create a sender for a topic. const sender = sbClient.createSender(queueName); try { // Tries to send all messages in a single batch. // Will fail if the messages cannot fit in a batch. // await sender.sendMessages(messages); // create a batch object let batch = await sender.createMessageBatch(); for (let i = 0; i < messages.length; i++) { // for each message in the array // try to add the message to the batch if (!batch.tryAddMessage(messages[i])) { // if it fails to add the message to the current batch // send the current batch as it is full await sender.sendMessages(batch); // then, create a new batch batch = await sender.createMessageBatch(); // now, add the message failed to be added to the previous batch to this batch if (!batch.tryAddMessage(messages[i])) { // if it still can't be added to the batch, the message is probably too big to fit in a batch throw new Error("Message too big to fit in a batch"); } } } // Send the last created batch of messages to the queue await sender.sendMessages(batch); console.log(`Sent a batch of messages to the queue: ${queueName}`); // Close the sender await sender.close(); } finally { await sbClient.close(); } } // call the main function main().catch((err) => { console.log("Error occurred: ", err); process.exit(1); });Ersätt
<SERVICE-BUS-NAMESPACE>med Service Bus-namnområdet.Ersätt
<QUEUE NAME>med namnet på kön.Om du vill köra koden i den här filen använder du det här kommandot i en kommandotolk:
node send.jsDu bör se följande utdata.
Sent a batch of messages to the queue: myqueue
Ta emot meddelanden från en kö
Logga in med Azure CLI-kommandot az login för din lokala dator för att tillhandahålla den lösenordslösa autentisering som krävs i den här koden.
Öppna en textredigerare, till exempel Visual Studio Code.
Skapa en fil med namnet
receive.jsoch klistra in följande kod i den.const { delay, ServiceBusClient, ServiceBusMessage } = require("@azure/service-bus"); const { DefaultAzureCredential } = require("@azure/identity"); // Replace `<SERVICE-BUS-NAMESPACE>` with your namespace const fullyQualifiedNamespace = "<SERVICE-BUS-NAMESPACE>.servicebus.windows.net"; // Passwordless credential const credential = new DefaultAzureCredential(); // name of the queue const queueName = "<QUEUE NAME>" async function main() { // create a Service Bus client using the passwordless authentication to the Service Bus namespace const sbClient = new ServiceBusClient(fullyQualifiedNamespace, credential); // createReceiver() can also be used to create a receiver for a subscription. const receiver = sbClient.createReceiver(queueName); // function to handle messages const myMessageHandler = async (messageReceived) => { console.log(`Received message: ${messageReceived.body}`); }; // function to handle any errors const myErrorHandler = async (error) => { console.log(error); }; // subscribe and specify the message and error handlers receiver.subscribe({ processMessage: myMessageHandler, processError: myErrorHandler }); // Waiting long enough before closing the sender to send messages await delay(20000); await receiver.close(); await sbClient.close(); } // call the main function main().catch((err) => { console.log("Error occurred: ", err); process.exit(1); });Ersätt
<SERVICE-BUS-NAMESPACE>med Service Bus-namnområdet.Ersätt
<QUEUE NAME>med namnet på kön.Om du vill köra koden i den här filen använder du det här kommandot i en kommandotolk:
node receive.js
Du bör se följande utdata.
Received message: Albert Einstein
Received message: Werner Heisenberg
Received message: Marie Curie
Received message: Steven Hawking
Received message: Isaac Newton
Received message: Niels Bohr
Received message: Michael Faraday
Received message: Galileo Galilei
Received message: Johannes Kepler
Received message: Nikolaus Kopernikus
På sidan Översikt för Service Bus-namnområdet i Azure Portal kan du se antal inkommande och utgående meddelanden. Du kan behöva vänta i en minut eller så och sedan uppdatera sidan för att se de senaste värdena.
Välj kön på den här översiktssidan för att gå till sidan Service Bus-kö . Du ser också antalet inkommande och utgående meddelanden på den här sidan. Du ser även annan information, till exempel köns aktuella storlek , maximal storlek, antal aktiva meddelanden och så vidare.
Felsökning
Om du får något av följande fel när du kör den lösenordslösa versionen av JavaScript-koden loggar du in med hjälp av Azure CLI-kommandot az login.
Lämplig roll tillämpas på ditt Azure-användarkonto:
- Skicka-behörigheter krävs för att utföra den här åtgärden
- "Ta emot" anspråk krävs för att utföra den här åtgärden
Rensa resurser
Gå till Service Bus-namnområdet i Azure Portal och välj Ta bort på Azure Portal för att ta bort namnområdet och kön i det.
Relaterat innehåll
Se följande dokumentation och exempel: