Snabbstart: Azure Queue Storage-klientbibliotek för .NET

Kom igång med Azure Queue Storage-klientbiblioteket för .NET. Azure Queue Storage är en tjänst för lagring av ett stort antal meddelanden för senare hämtning och bearbetning. Följ de här stegen för att installera paketet och prova exempelkod för grundläggande uppgifter.

API-referensdokumentation NuGet-exempel (Library source code | Package) | |

Använd Azure Queue Storage-klientbiblioteket för .NET för att:

  • Skapa en kö
  • Lägga till meddelanden i en kö
  • Titta på meddelanden i en kö
  • Uppdatera ett meddelande i en kö
  • Hämta kölängden
  • Ta emot meddelanden från en kö
  • Ta bort meddelanden från en kö
  • Ta bort en kö

Förutsättningar

Konfigurera

Det här avsnittet beskriver hur du förbereder ett projekt för att arbeta med Azure Queue Storage-klientbiblioteket för .NET.

Skapa projektet

Skapa ett .NET-program med namnet QueuesQuickstart.

  1. I ett konsolfönster (till exempel cmd, PowerShell eller Bash) använder du dotnet new kommandot för att skapa en ny konsolapp med namnet QueuesQuickstart. Det här kommandot skapar ett enkelt "hello world"-C#-projekt med en enda källfil med namnet Program.cs.

    dotnet new console -n QueuesQuickstart
    
  2. Växla till den nyligen skapade QueuesQuickstart katalogen.

    cd QueuesQuickstart
    

Installera paketen

Installera Azure Queue Storage-klientbiblioteket för .NET-paketet medan du fortfarande är i programkatalogen dotnet add package med hjälp av kommandot .

dotnet add package Azure.Storage.Queues

Azure Identity-klientbibliotekspaketet behövs också för lösenordslösa anslutningar till Azure-tjänster.

dotnet add package Azure.Identity

Konfigurera appramverket

  1. Öppna projektet i valfri redigerare
  2. Öppna filen Program.cs
  3. Uppdatera den befintliga koden så att den matchar följande:
using Azure;
using Azure.Identity;
using Azure.Storage.Queues;
using Azure.Storage.Queues.Models;
using System;
using System.Threading.Tasks;

Console.WriteLine("Azure Queue Storage client library - .NET quickstart sample");

// Quickstart code goes here

Autentisera till Azure

Programbegäranden till de flesta Azure-tjänster måste auktoriseras. Att använda klassen DefaultAzureCredential som tillhandahålls av Azure Identity-klientbiblioteket är den rekommenderade metoden för att implementera lösenordslösa anslutningar till Azure-tjänster i din kod.

Du kan också auktorisera begäranden till Azure-tjänster med hjälp av lösenord, anslutningssträng eller andra autentiseringsuppgifter direkt. Den här metoden bör dock användas med försiktighet. Utvecklare måste vara noggranna för att aldrig exponera dessa hemligheter på en osäker plats. Alla som får åtkomst till lösenordet eller den hemliga nyckeln kan autentisera sig. DefaultAzureCredential ger bättre hanterings- och säkerhetsfördelar jämfört med kontonyckeln för att tillåta lösenordslös autentisering. Båda alternativen visas i följande exempel.

DefaultAzureCredential är en klass som tillhandahålls av Azure Identity-klientbiblioteket för .NET. Mer information om DefaultAzureCredentialfinns i Översikt över DefaultAzureCredential. DefaultAzureCredential stöder flera autentiseringsmetoder och avgör vilken metod som ska användas vid körning. Med den här metoden kan din app använda olika autentiseringsmetoder i olika miljöer (lokalt jämfört med produktion) utan att implementera miljöspecifik kod.

Din app kan till exempel autentisera med dina Inloggningsuppgifter för Visual Studio när du utvecklar lokalt och sedan använda en hanterad identitet när den har distribuerats till Azure. Inga kodändringar krävs för den här övergången.

När du utvecklar lokalt kontrollerar du att det användarkonto som har åtkomst till ködata har rätt behörigheter. Du behöver Storage Queue Data-deltagare för att läsa och skriva ködata. Om du vill tilldela dig själv den här rollen måste du tilldelas 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-portalen, Azure CLI eller Azure PowerShell. Du kan lära dig mer om tillgängliga omfång för rolltilldelningar på översiktssidan för omfång .

I det här scenariot tilldelar du behörigheter till ditt användarkonto, begränsat till lagringskontot, för att följa principen om lägsta behörighet. Den här metoden ger användarna endast de minsta behörigheter som krävs och skapar säkrare produktionsmiljöer.

I följande exempel tilldelas rollen Lagringsködatadeltagare till ditt användarkonto, vilket ger både läs- och skrivåtkomst till ködata i ditt lagringskonto.

Viktigt!

I de flesta fall tar det en minut eller två för rolltilldelningen att spridas i Azure, men 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.

  1. Leta upp ditt lagringskonto i Azure-portalen med hjälp av huvudsökfältet eller det vänstra navigeringsfältet.

  2. På översiktssidan för lagringskontot väljer du Åtkomstkontroll (IAM) på den vänstra menyn.

  3. På sidan Åtkomstkontroll (IAM) väljer du fliken Rolltilldelningar .

  4. Välj + Lägg till på den översta menyn och sedan Lägg till rolltilldelning från den resulterande nedrullningsbara menyn.

A screenshot showing how to assign a role.

  1. Använd sökrutan för att filtrera resultatet till önskad roll. I det här exemplet söker du efter Storage Queue Data Contributor och väljer matchande resultat och väljer sedan Nästa.

  2. Under Tilldela åtkomst till väljer du Användare, grupp eller tjänstens huvudnamn och sedan + Välj medlemmar.

  3. 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.

  4. Välj Granska + tilldela för att gå till den sista sidan och sedan Granska + tilldela igen för att slutföra processen.

Objektmodell

Azure Queue Storage är en tjänst för lagring av ett stort antal meddelanden. Ett kömeddelande kan vara upp till 64 KB stort. En kö kan innehålla miljontals meddelanden, upp till den totala kapacitetsgränsen för ett lagringskonto. Köer används ofta för att skapa en kvarvarande arbetslogg för att bearbeta asynkront. Queue Storage erbjuder tre typer av resurser:

  • Lagringskonto: All åtkomst till Azure Storage görs via ett lagringskonto. Mer information om lagringskonton finns i Översikt över lagringskonto
  • Kö: en kö innehåller en uppsättning meddelanden. Alla meddelanden måste vara i en kö. Observera att könamnet måste vara helt i gemener. Mer information om namngivning av köer finns i namngivning av köer och metadata.
  • Meddelande: ett meddelande i valfritt format, som är upp till 64 KB. Ett meddelande kan finnas kvar i kön i högst 7 dagar. För version 2017-07-29 eller senare kan den maximala tiden till live vara ett positivt tal, eller -1 som anger att meddelandet inte upphör att gälla. Om den här parametern utelämnas är standardtiden till live sju dagar.

Följande diagram visar relationen mellan de här resurserna.

Diagram of Queue storage architecture

Använd följande .NET-klasser för att interagera med dessa resurser:

  • QueueServiceClientQueueServiceClient: Gör att du kan hantera alla köer i ditt lagringskonto.
  • QueueClient: Med QueueClient klassen kan du hantera och ändra en enskild kö och dess meddelanden.
  • QueueMessage: Klassen QueueMessage representerar de enskilda objekt som returneras när de anropas ReceiveMessages i en kö.

Kodexempel

Dessa exempelkodfragment visar hur du utför följande åtgärder med Azure Queue Storage-klientbiblioteket för .NET:

Auktorisera åtkomst och skapa ett klientobjekt

För lokal utveckling kontrollerar du att du är autentiserad med samma Microsoft Entra-konto som du tilldelade rollen till. Du kan autentisera via populära utvecklingsverktyg, till exempel Azure CLI eller Azure PowerShell. De utvecklingsverktyg som du kan autentisera med varierar mellan olika språk.

Logga in på Azure via Azure CLI med följande kommando:

az login

När du har autentiserats kan du skapa och auktorisera ett QueueClient objekt med hjälp av DefaultAzureCredential för att komma åt ködata i lagringskontot. DefaultAzureCredential identifierar och använder automatiskt det konto som du loggade in med i föregående steg.

Om du vill auktorisera med hjälp av DefaultAzureCredentialkontrollerar du att du har lagt till Azure.Identity-paketet enligt beskrivningen i Installera paketen. Se också till att lägga till ett användningsdirektiv för Azure.Identity namnområdet i filen Program.cs :

using Azure.Identity;

Bestäm sedan ett namn för kön och skapa en instans av klassen med hjälp DefaultAzureCredential av QueueClient för auktorisering. Vi använder det här klientobjektet för att skapa och interagera med köresursen i lagringskontot.

Viktigt!

Könamn får endast innehålla gemener, siffror och bindestreck och måste börja med en bokstav eller ett tal. Varje bindestreck måste föregås och följas av ett tecken som inte är ett bindestreck. Namnet måste också vara mellan 3 och 63 tecken långt. Mer information finns i Namngivning av köer och metadata.

Lägg till följande kod i slutet av filen Program.cs . Ersätt <storage-account-name> platshållarvärdet:

// Create a unique name for the queue
// TODO: Replace the <storage-account-name> placeholder 
string queueName = "quickstartqueues-" + Guid.NewGuid().ToString();
string storageAccountName = "<storage-account-name>";

// Instantiate a QueueClient to create and interact with the queue
QueueClient queueClient = new QueueClient(
    new Uri($"https://{storageAccountName}.queue.core.windows.net/{queueName}"),
    new DefaultAzureCredential());

Kommentar

Meddelanden som skickas med QueueClient klassen måste vara i ett format som kan ingå i en XML-begäran med UTF-8-kodning. Du kan också ange alternativet MessageEncoding till Base64 för att hantera icke-kompatibla meddelanden.

Skapa en kö

Med hjälp av QueueClient objektet anropar du CreateAsync metoden för att skapa kön i ditt lagringskonto.

Lägg till den här koden i slutet av metoden Program.cs :

Console.WriteLine($"Creating queue: {queueName}");

// Create the queue
await queueClient.CreateAsync();

Lägga till meddelanden i en kö

Följande kodfragment lägger asynkront till meddelanden i kön genom att anropa SendMessageAsync metoden. Det sparar också en SendReceipt returnerad från ett SendMessageAsync anrop. Kvittot används för att uppdatera meddelandet senare i programmet.

Lägg till den här koden i slutet av Filen Program.cs :

Console.WriteLine("\nAdding messages to the queue...");

// Send several messages to the queue
await queueClient.SendMessageAsync("First message");
await queueClient.SendMessageAsync("Second message");

// Save the receipt so we can update this message later
SendReceipt receipt = await queueClient.SendMessageAsync("Third message");

Titta på meddelanden i en kö

Titta på meddelandena i kön genom att anropa PeekMessagesAsync metoden. Den här metoden hämtar ett eller flera meddelanden längst fram i kön, men ändrar inte meddelandets synlighet.

Lägg till den här koden i slutet av Filen Program.cs :

Console.WriteLine("\nPeek at the messages in the queue...");

// Peek at messages in the queue
PeekedMessage[] peekedMessages = await queueClient.PeekMessagesAsync(maxMessages: 10);

foreach (PeekedMessage peekedMessage in peekedMessages)
{
    // Display the message
    Console.WriteLine($"Message: {peekedMessage.MessageText}");
}

Uppdatera ett meddelande i en kö

Uppdatera innehållet i ett meddelande genom att anropa UpdateMessageAsync metoden. Den här metoden kan ändra ett meddelandes tidsgräns för synlighet och innehåll. Meddelandeinnehållet måste vara en UTF-8-kodad sträng som är upp till 64 KB stor. Tillsammans med det nya innehållet för meddelandet skickar du in värdena från SendReceipt det som sparades tidigare i koden. Värdena SendReceipt identifierar vilket meddelande som ska uppdateras.

Console.WriteLine("\nUpdating the third message in the queue...");

// Update a message using the saved receipt from sending the message
await queueClient.UpdateMessageAsync(receipt.MessageId, receipt.PopReceipt, "Third message has been updated");

Hämta kölängden

Du kan hämta en uppskattning av antalet meddelanden i en kö. Metoden GetProperties returnerar köegenskaper inklusive antalet meddelanden. Egenskapen ApproximateMessagesCount innehåller det ungefärliga antalet meddelanden i kön. Det här talet är inte lägre än det faktiska antalet meddelanden i kön, men kan vara högre.

Lägg till den här koden i slutet av Filen Program.cs :

QueueProperties properties = queueClient.GetProperties();

// Retrieve the cached approximate message count
int cachedMessagesCount = properties.ApproximateMessagesCount;

// Display number of messages
Console.WriteLine($"Number of messages in queue: {cachedMessagesCount}");

Ta emot meddelanden från en kö

Ladda ned tidigare tillagda meddelanden genom att anropa ReceiveMessagesAsync metoden.

Lägg till den här koden i slutet av Filen Program.cs :

Console.WriteLine("\nReceiving messages from the queue...");

// Get messages from the queue
QueueMessage[] messages = await queueClient.ReceiveMessagesAsync(maxMessages: 10);

Du kan också ange ett värde för maxMessages, vilket är antalet meddelanden som ska hämtas från kön. Standardvärdet är 1 meddelande och det maximala är 32 meddelanden. Du kan också ange ett värde för visibilityTimeout, som döljer meddelandena från andra åtgärder under tidsgränsperioden. Standardvärdet är 30 sekunder.

Ta bort meddelanden från en kö

Ta bort meddelanden från kön när de har bearbetats. I det här fallet visar bearbetningen bara meddelandet i konsolen.

Appen pausar för användarindata genom att anropa Console.ReadLine innan den bearbetar och tar bort meddelandena. Kontrollera i Azure-portalen att resurserna har skapats korrekt innan de tas bort. Meddelanden som inte uttryckligen tas bort visas så småningom i kön igen för en ny chans att bearbeta dem.

Lägg till den här koden i slutet av Filen Program.cs :

Console.WriteLine("\nPress Enter key to 'process' messages and delete them from the queue...");
Console.ReadLine();

// Process and delete messages from the queue
foreach (QueueMessage message in messages)
{
    // "Process" the message
    Console.WriteLine($"Message: {message.MessageText}");

    // Let the service know we're finished with
    // the message and it can be safely deleted.
    await queueClient.DeleteMessageAsync(message.MessageId, message.PopReceipt);
}

Ta bort en kö

Följande kod rensar de resurser som appen skapade genom att ta bort kön med hjälp av DeleteAsync metoden .

Lägg till den här koden i slutet av Filen Program.cs :

Console.WriteLine("\nPress Enter key to delete the queue...");
Console.ReadLine();

// Clean up
Console.WriteLine($"Deleting queue: {queueClient.Name}");
await queueClient.DeleteAsync();

Console.WriteLine("Done");

Kör koden

Den här appen skapar och lägger till tre meddelanden i en Azure-kö. Koden visar meddelandena i kön och hämtar och tar sedan bort dem innan du slutligen tar bort kön.

I konsolfönstret navigerar du till programkatalogen och skapar och kör sedan programmet.

dotnet build
dotnet run

Utdata från appen liknar följande exempel:

Azure Queue Storage client library - .NET quickstart sample

Creating queue: quickstartqueues-5c72da2c-30cc-4f09-b05c-a95d9da52af2

Adding messages to the queue...

Peek at the messages in the queue...
Message: First message
Message: Second message
Message: Third message

Updating the third message in the queue...

Receiving messages from the queue...

Press Enter key to 'process' messages and delete them from the queue...

Message: First message
Message: Second message
Message: Third message has been updated

Press Enter key to delete the queue...

Deleting queue: quickstartqueues-5c72da2c-30cc-4f09-b05c-a95d9da52af2
Done

När appen pausar innan du tar emot meddelanden kontrollerar du ditt lagringskonto i Azure-portalen. Kontrollera att meddelandena finns i kön.

Tryck på tangenten Enter för att ta emot och ta bort meddelandena. När du uppmanas att göra det trycker du på tangenten Enter igen för att ta bort kön och slutföra demonstrationen.

Nästa steg

I den här snabbstarten har du lärt dig hur du skapar en kö och lägger till meddelanden i den med hjälp av asynkron .NET-kod. Sedan lärde du dig att granska, hämta och ta bort meddelanden. Slutligen har du lärt dig hur du tar bort en meddelandekö.

Självstudier, exempel, snabbstarter och annan dokumentation finns i: