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