Azure Queue Storage gebruiken vanuit PowerShell
Azure Queue Storage is een service voor het opslaan van grote aantallen berichten die overal ter wereld toegankelijk zijn via HTTP of HTTPS. Zie Inleiding tot Azure Queue Storage voor gedetailleerde informatie. In dit artikel worden veelvoorkomende wachtrijopslagbewerkingen behandeld. U leert het volgende:
- Een wachtrij maken
- Een wachtrij ophalen
- Berichten toevoegen
- Berichten ophalen
- Een bericht verwijderen
- Een wachtrij verwijderen
Voor deze handleiding is de Azure PowerShell-moduleAz
v12.0.0.0 vereist. Voer deze opdracht Get-Module -ListAvailable Az
uit om de momenteel geïnstalleerde versie te vinden. Als u PowerShell wilt upgraden, raadpleegt u De Azure PowerShell-module installeren.
Er zijn geen PowerShell-cmdlets voor het gegevensvlak voor wachtrijen. Als u gegevensvlakbewerkingen wilt uitvoeren, zoals een bericht toevoegen, een bericht lezen en een bericht verwijderen, moet u de .NET Storage-clientbibliotheek gebruiken omdat deze beschikbaar wordt gesteld in PowerShell. U maakt een berichtobject en vervolgens kunt u opdrachten gebruiken, zoals AddMessage
het uitvoeren van bewerkingen op dat bericht. In dit artikel leest u hoe u dit doet.
Notitie
Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
Aanmelden bij Azure
Meld u aan bij uw Azure-abonnement met de opdracht Connect-AzAccount
en volg de instructies op het scherm. Indien nodig kunt u een abonnement opgeven door de TenantId
en Subscription
parameters toe te voegen en de respectieve waarden op te geven.
Connect-AzAccount
Een lijst met locaties ophalen
Als u niet weet welke locatie u wilt gebruiken, kunt u de beschikbare locaties weergeven met behulp van de Get-AzLocation
cmdlet, zoals wordt weergegeven in het opgegeven voorbeeld. Nadat de lijst is weergegeven, kiest u een locatie en slaat u deze op in de location
variabele voor toekomstig gebruik. In de voorbeelden in deze oefening wordt de eastus
locatie gebruikt.
Get-AzLocation | Select-Object Location
$location = "eastus"
Een brongroep maken
Een Azure-resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd. Kies een naam voor uw resourcegroep en sla deze op in de resourceGroup
variabele voor toekomstig gebruik. In dit voorbeeld wordt de naam howtoqueuesrg
gebruikt.
Maak een resourcegroep door de cmdlet New-AzResourceGroup aan te roepen en de naam en locatie op te geven voor de ResourceGroupName
parameter, zoals wordt weergegeven.
$resourceGroup = "howtoqueuesrg"
New-AzResourceGroup -ResourceGroupName $resourceGroup -Location $location
Een opslagaccount maken
Een Azure-opslagaccount is een unieke resource met een unieke naam die al uw gegevensobjecten bevat als blobs, bestanden, wachtrijen en tabellen.
Kies een naam voor uw opslagaccount en sla deze op in de storageAccountName
variabele voor toekomstig gebruik. In dit voorbeeld wordt de naam howtoqueuestorage
gebruikt.
Maak vervolgens een standaard opslagaccount voor algemeen gebruik met lokaal redundante opslag (LRS) met behulp van de cmdlet New-AzStorageAccount . Stel ten slotte de context van het opslagaccount in waarmee het opslagaccount wordt gedefinieerd en sla het op in de ctx
variabele. Als u verwijst naar de context met de variabele, kunt u bewerkingen uitvoeren voor een opslagaccount zonder herhaaldelijk referenties op te geven.
$storageAccountName = "howtoqueuestorage"
$storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup `
-Name $storageAccountName `
-Location $location `
-SkuName Standard_LRS
$ctx = $storageAccount.Context
Een wachtrij maken
Kies eerst een naam voor uw opslagaccount en sla deze op in de queueName
variabele. In dit voorbeeld wordt de naam howtoqueuestorage
gebruikt. Maak vervolgens een wachtrij met behulp van de cmdlet New-AzStorageQueue en geef de queueName
variabelen ctx
door aan de Name
en Context
parameters, zoals wordt weergegeven.
$queueName = "howtoqueue"
$queue = New-AzStorageQueue -Name $queueName -Context $ctx
Zie Naamgevingswachtrijen en metagegevens voor Azure Queue Storage voor informatie over naamconventies voor Azure Queue Storage.
Een wachtrij ophalen
U kunt de cmdlet Get-AzStorageQueue gebruiken om een specifieke wachtrij of een lijst met alle wachtrijen in een opslagaccount op te halen. In de volgende voorbeelden ziet u hoe u alle wachtrijen ophaalt met behulp van de Get-AzStorageQueue
cmdlet en hoe u een wachtrij opgeeft met behulp van Name
de parameter.
# 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
Berichten aan een wachtrij toevoegen
Bewerkingen die van invloed zijn op de berichten in een wachtrij, gebruiken de .NET Storage-clientbibliotheek zoals weergegeven in PowerShell. Als u een bericht aan een wachtrij wilt toevoegen, geeft u uw bericht door als een tekenreeks aan de methode van SendMessage
de QueueClient
klasse.
De berichtreeks moet de UTF-8-indeling hebben.
In het volgende voorbeeld ziet u hoe u berichten toevoegt aan uw wachtrij.
# 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($_)}
Als u Azure Storage Explorer gebruikt, kunt u verbinding maken met uw Azure-account en de wachtrijen in het opslagaccount bekijken en inzoomen op een wachtrij om de berichten in de wachtrij weer te geven.
Berichten ophalen uit een wachtrij
Hoewel niet altijd gegarandeerd, worden berichten opgehaald uit een wachtrij in de best-try-, first-in-first-out-volgorde .
Afhankelijk van uw use-case kunt u een of meer berichten uit een wachtrij ophalen. U kunt ook de zichtbaarheid van de berichten wijzigen, waardoor andere processen geen toegang hebben tot hetzelfde bericht.
Er zijn twee manieren om berichten op te halen uit een wachtrij:
- Ontvangen: Een bericht ophalen met behulp van
Receive
de wachtrijen van het bericht en de eigenschap ervan verhogenDequeueCount
. Tenzij een bericht wordt verwijderd, wordt het opnieuw in de wachtrij geplaatst om opnieuw te worden verwerkt. - Korte weergave: Door een bericht op te halen,
Peek
kunt u berichten uit de wachtrij 'voorbeeld' bekijken.Peek
het bericht niet in de wachtrij zet of de eigenschap ervan verhogenDequeueCount
.
Berichten ontvangen
Wanneer u een bericht uit een wachtrij leest met behulp van een methode zoals ReceiveMessage
, wordt het bericht tijdelijk uit de wachtrij verwijderd en wordt het tijdelijk onzichtbaar voor andere processen. Deze time-out voor zichtbaarheid bepaalt hoe lang het bericht onzichtbaar blijft. De standaardtime-out voor zichtbaarheid is 30 seconden.
Als het bericht niet wordt verwerkt voordat de time-out voor zichtbaarheid is verstreken, DequeueCount
wordt de eigenschap verhoogd en wordt het weer aan het einde van de wachtrij geplaatst. Als u hetzelfde bericht opnieuw invoegt, zorgt u ervoor dat een ander proces hetzelfde bericht kan ophalen en het opnieuw kan proberen.
In het volgende voorbeeld wordt de variabele invisibleTimeout ingesteld op 10 seconden en worden vervolgens twee berichten uit de wachtrij gelezen.
# 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
U kunt meerdere berichten uit de wachtrij tegelijk ophalen met behulp van de methode en het ReceiveMessages
doorgeven en geheel getal om het maximum aantal berichten op te geven dat moet worden geretourneerd.
# 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
Berichten bekijken
Voor gebruiksvoorbeelden waarbij gedeelde wachtrijen kunnen worden gebruikt of berichten kunnen worden bekeken zonder de zichtbaarheid ervan te wijzigen, kunt u de PeekMessage
en PeekMessages
methoden gebruiken. Net als in het vorige ReceiveMessages
voorbeeld kunnen meerdere berichten tegelijk worden bekeken door een geheel getal door te geven om het maximum aantal berichten op te geven.
In de volgende voorbeelden worden zowel de PeekMessage
als PeekMessages
de methoden gebruikt om berichten op te halen uit een wachtrij.
# 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
Berichten uit een wachtrij verwijderen
Om onbedoeld verwijderen te voorkomen, moeten zowel de eigenschappen PopReceipt
als de MessageId
eigenschappen worden opgegeven voordat u een bericht definitief verwijdert. Vanwege deze vereiste is het het eenvoudigst om een bericht te verwijderen met behulp van een proces in twee stappen.
Haal eerst het volgende bericht in de wachtrij op door de ReceiveMessage
of ReceiveMessages
methoden aan te roepen. Als u het verwijderen van het bericht uit de wachtrij wilt voltooien, geeft u de waarden van het bericht door aan de DeleteMessage
methode.
Dit proces wordt geïllustreerd in de volgende voorbeelden.
# 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)}
Een wachtrij verwijderen
Als u een wachtrij en alle berichten in de wachtrij wilt verwijderen, roept u de methode van Delete
de QueueClient
klasse aan. In het volgende voorbeeld ziet u hoe u de specifieke wachtrij verwijdert die in deze oefening wordt gebruikt.
# Delete the queue
Remove-AzStorageQueue -Name $queueName -Context $ctx
Resources opschonen
Verwijder de resourcegroep om de assets en resources te verwijderen die in deze oefening zijn gemaakt. In dit geval worden het opslagaccount en de resourcegroep zelf ook verwijderd.
Remove-AzResourceGroup -Name $resourceGroup
Volgende stappen
In dit artikel hebt u geleerd over eenvoudig Queue Storage-beheer met PowerShell, waaronder het volgende:
- Een wachtrij maken
- Een wachtrij ophalen
- Berichten toevoegen
- Berichten lezen
- Berichten verwijderen
- Een wachtrij verwijderen
Microsoft Azure PowerShell-opslag-cmdlets
Microsoft Azure Storage Explorer
- Microsoft Azure Storage Explorer is een gratis, zelfstandige app van Microsoft waarmee u visueel met Azure Storage-gegevens kunt werken in Windows, macOS en Linux.