Använda Azure Queue Storage från PowerShell

Azure Queue Storage är en tjänst för lagring av ett stort antal meddelanden som kan nås var som helst i världen via HTTP eller HTTPS. Detaljerad information finns i Introduktion till Azure Queue Storage. Den här artikeln beskriver vanliga kölagringsåtgärder. Du lär dig att:

  • Skapa en kö
  • Hämta en kö
  • Lägga till meddelanden
  • Hämta meddelanden
  • Ta bort ett meddelande
  • Ta bort en kö

Den här guiden kräver Azure PowerShell-modulen (Az) v12.0.0. Kör Get-Module -ListAvailable Az för att hitta den installerade versionen. Om du behöver uppgradera kan du läsa Install Azure PowerShell module (Installera Azure PowerShell-modul).

Det finns inga PowerShell-cmdletar för dataplanet för köer. Om du vill utföra dataplansåtgärder som att lägga till ett meddelande, läsa ett meddelande och ta bort ett meddelande måste du använda .NET-lagringsklientbiblioteket när det exponeras i PowerShell. Du skapar ett meddelandeobjekt och sedan kan du använda kommandon som AddMessage för att utföra åtgärder på meddelandet. Den här artikeln visar hur du gör det.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Information om hur du kommer igång finns i Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Logga in på Azure

Logga in på din Azure-prenumeration med kommandot Connect-AzAccount och följ anvisningarna på skärmen. Om det behövs kan du ange en prenumeration genom att lägga till parametrarna TenantId och Subscription och inklusive respektive värden.

Connect-AzAccount

Hämta en lista över platser

Om du inte vet vilken plats du vill använda kan du visa en lista över tillgängliga platser med hjälp av cmdleten Get-AzLocation som du ser i exemplet. När listan har visats väljer du en plats och lagrar den i variabeln location för framtida användning. Exemplen i den här övningen använder platsen eastus .

Get-AzLocation | Select-Object Location
$location = "eastus"

Skapa en resursgrupp

En Azure-resursgrupp är en logisk container där Azure-resurser distribueras och hanteras. Välj ett namn för resursgruppen och lagra den i variabeln resourceGroup för framtida användning. I det här exemplet används namnet howtoqueuesrg.

Skapa en resursgrupp genom att anropa cmdleten New-AzResourceGroup och ange namnet och platsen för parametern ResourceGroupName som visas.

$resourceGroup = "howtoqueuesrg"
New-AzResourceGroup -ResourceGroupName $resourceGroup -Location $location

Skapa ett lagringskonto

Ett Azure Storage-konto är en unikt namngiven resurs som innehåller alla dina dataobjekt som blobar, filer, köer och tabeller.

Välj ett namn för ditt lagringskonto och lagra det i variabeln storageAccountName för framtida användning. I det här exemplet används namnet howtoqueuestorage.

Skapa sedan ett standardlagringskonto för generell användning med lokalt redundant lagring (LRS) med cmdleten New-AzStorageAccount . Slutligen anger du kontexten för lagringskontot som definierar lagringskontot och sparar det till variabeln ctx . Om du refererar till kontexten med variabeln kan du utföra åtgärder mot ett lagringskonto utan att upprepade gånger ange autentiseringsuppgifter.

$storageAccountName = "howtoqueuestorage"

$storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup `
  -Name $storageAccountName `
  -Location $location `
  -SkuName Standard_LRS

$ctx = $storageAccount.Context

Skapa en kö

Välj först ett namn för ditt lagringskonto och lagra det i variabeln queueName . I det här exemplet används namnet howtoqueuestorage. Skapa sedan en kö med cmdleten New-AzStorageQueue och skicka queueName variablerna och ctx till parametrarna Name och Context som visas.

$queueName = "howtoqueue"
$queue = New-AzStorageQueue -Name $queueName -Context $ctx

Information om namngivningskonventioner för Azure Queue Storage finns i Namngivningsköer och metadata.

Hämta en kö

Du kan använda cmdleten Get-AzStorageQueue för att hämta en specifik kö eller en lista över alla köer i ett lagringskonto. Följande exempel visar hur du hämtar alla köer med hjälp av cmdleten Get-AzStorageQueue och hur du anger en kö med hjälp Name av parametern .

# Retrieve all queues and show their names
Get-AzStorageQueue -Context $ctx | Select-Object Name

# Retrieve a specific queue
$queue = Get-AzStorageQueue -Name $queueName -Context $ctx

# Show the properties of the queue
$queue

Lägga till meddelanden i en kö

Åtgärder som påverkar meddelandena i en kö använder .NET Storage-klientbiblioteket som exponerat i PowerShell. Om du vill lägga till ett meddelande i en kö skickar du meddelandet som en sträng till QueueClient klassens SendMessage metod.

Meddelandesträngen måste vara i UTF-8-format.

I följande exempel visas hur du lägger till meddelanden i kön.

# Create a new message using a constructor of the CloudQueueMessage class
$queueMessage = "This is message 1"

# Add a new message to the queue
$queue.QueueClient.AddMessageAsync($queueMessage)

# Add two more messages to the queue
$queueMessages = @("This is message 2","This is message 3")
$queueMessages | foreach {$queue.QueueClient.AddMessageAsync($_)}

Om du använder Azure Storage Explorer kan du ansluta till ditt Azure-konto och visa köerna i lagringskontot och öka detaljnivån i en kö för att visa meddelandena i kön.

Hämta meddelanden från en kö

Även om det inte alltid är garanterat hämtas meddelanden från en kö i bäst-prova-först-i-först-ut-ordning.

Beroende på ditt användningsfall kan du hämta ett eller flera meddelanden från en kö. Du kan också ändra synligheten för meddelandena, antingen tillåta eller hindra andra processer från att komma åt samma meddelande.

Det finns två sätt att hämta meddelanden från en kö:

  • Ta emot: När du hämtar ett meddelande med hjälp av Receive dequeues meddelandet och ökar dess DequeueCount egenskap. Såvida inte ett meddelande tas bort, sätts det på nytt i kön för att bearbetas igen.
  • Granska: Om du hämtar ett meddelande med hjälp av Peek kan du "förhandsgranska" meddelanden från kön. Peek tar inte bort meddelandet eller ökar dess DequeueCount egenskap.

Ta emot meddelanden

När du läser ett meddelande från en kö med hjälp av en metod som ReceiveMessage, blir meddelandet tillfälligt borttaget och blir tillfälligt osynligt för andra processer. Den här tidsgränsen för synlighet definierar hur länge meddelandet förblir osynligt. Standardtidsgränsen för synlighet är 30 sekunder.

Om meddelandet inte bearbetas innan tidsgränsen för synligheten överskrids ökas dess DequeueCount egenskap och den sätts in igen i slutet av kön. Om du återställer samma meddelande ser du till att en annan process kan hämta samma meddelande och försöka igen.

Följande exempel anger variabeln invisibleTimeout till 10 sekunder och läser sedan två meddelanden från kön.

# Set the amount of time you want to entry to be invisible after read from the queue
# If it is not deleted by the end of this time, it will show up in the queue again
$visibilityTimeout = [System.TimeSpan]::FromSeconds(10)

# Read the message from the queue, then show the contents of the message. 
# Read the next message, too.
$queueMessage = $queue.QueueClient.ReceiveMessage($visibilityTimeout)
$queueMessage.Value
$queueMessage = $queue.QueueClient.ReceiveMessage($visibilityTimeout)
$queueMessage.Value

Du kan hämta flera meddelanden från kön samtidigt med hjälp ReceiveMessages av metoden och skicka och heltalsvärdet för att ange det maximala antalet meddelanden som ska returneras.

# Set the amount of time you want to entry to be invisible after read from the queue
# If it is not deleted by the end of this time, it will show up in the queue again
$visibilityTimeout = [System.TimeSpan]::FromSeconds(10)

# Read the messages from the queue, then show the contents of the messages.
$queueMessage = $queue.QueueClient.ReceiveMessages(5,$visibilityTimeout)
$queueMessage.Value

Granska meddelanden

För användningsfall som kan innebära delade köer eller förhandsgranskning av meddelanden utan att ändra deras synlighet, kan du använda PeekMessage metoderna och PeekMessages . Precis som i föregående ReceiveMessages exempel kan flera meddelanden granskas samtidigt genom att skicka ett heltalsvärde för att ange det maximala antalet meddelanden.

I följande exempel används både PeekMessage metoderna och PeekMessages för att hämta meddelanden från en kö.

# Read the message from the queue, then show the contents of the message. 
$queueMessage = $queue.QueueClient.PeekMessage()
$queueMessage.Value

# Read the next four messages, then show the contents of the messages.
$queueMessage = $queue.QueueClient.PeekMessages(4)
$queueMessage.Value

Ta bort meddelanden från en kö

För att förhindra oavsiktlig borttagning måste både MessageId egenskaperna och PopReceipt anges innan ett meddelande tas bort permanent. På grund av det här kravet är det enklast att ta bort ett meddelande med hjälp av en tvåstegsprocess.

Hämta först nästa meddelande i kön genom att anropa ReceiveMessage metoderna eller ReceiveMessages . För att slutföra borttagningen av meddelandet från kön skickar du de värden som hämtats från meddelandet till DeleteMessage metoden.

Den här processen visas i följande exempel.

# Set the amount of time you want to entry to be invisible after read from the queue
# If it is not deleted by the end of this time, it will show up in the queue again
$visibilityTimeout = [System.TimeSpan]::FromSeconds(10)

# Receive one message from the queue, then delete the message. 
$queueMessage = $queue.QueueClient.ReceiveMessage($visibilityTimeout)
$queue.QueueClient.DeleteMessage($queueMessage.Value.MessageId, $queueMessage.Value.PopReceipt)

# Receive four message from the queue, then delete the messages. 
$queueMessage = $queue.QueueClient.ReceiveMessages(4,$visibilityTimeout)
$queueMessage.Value | foreach { $queue.QueueClient.DeleteMessage($_.MessageId, $_.PopReceipt)}

Ta bort en kö

Om du vill ta bort en kö och alla meddelanden som finns i den QueueClient anropar du klassens Delete metod. I följande exempel visas hur du tar bort den specifika kö som används i den här övningen.

# Delete the queue
Remove-AzStorageQueue -Name $queueName -Context $ctx

Rensa resurser

Ta bort resursgruppen för att ta bort de tillgångar och resurser som skapades i den här övningen. I det här fallet tas även lagringskontot och själva resursgruppen bort.

Remove-AzResourceGroup -Name $resourceGroup

Nästa steg

I den här artikeln har du lärt dig om grundläggande hantering av kölagring med PowerShell, inklusive hur du:

  • Skapa en kö
  • Hämta en kö
  • Lägga till meddelanden
  • Läsa meddelanden
  • Ta bort meddelanden
  • Ta bort en kö

Microsoft Azure PowerShell-lagrings-cmdletar

Microsoft Azure Storage Explorer

  • Microsoft Azure Storage Explorer är en kostnadsfri, fristående app från Microsoft som gör det möjligt att arbeta visuellt med Azure Storage-data i Windows, macOS och Linux.