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 Introduction to Azure Queue Storage (Inleiding tot Azure Queue Storage) voor gedetailleerde informatie. In dit artikel worden veelvoorkomende wachtrij-Storage beschreven. In deze zelfstudie leert u procedures om het volgende te doen:
- Een wachtrij maken
- Een wachtrij ophalen
- Een bericht toevoegen
- Een bericht lezen
- Een bericht verwijderen
- Een wachtrij verwijderen
Voor deze handleiding is de module Azure PowerShell ( Az ) v0.7 of hoger vereist. Voer 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 het toevoegen van een bericht, het lezen van een bericht en het verwijderen van een bericht, moet u de .NET-opslagclientbibliotheek gebruiken zoals deze wordt weergegeven in PowerShell. U maakt een berichtobject en vervolgens kunt u opdrachten zoals gebruiken AddMessage om bewerkingen op dat bericht uit te voeren. In dit artikel wordt beschreven hoe u dat doet.
Notitie
In dit artikel wordt de Azure Az PowerShell-module gebruikt. Dit is de aanbevolen PowerShell-module voor interactie met Azure. Raadpleeg Azure PowerShell installeren om aan de slag te gaan met de Az PowerShell-module. 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.
Connect-AzAccount
Lijst met locaties ophalen
Als u niet weet welke locatie u kunt gebruiken, kunt u een lijst met de beschikbare locaties weergeven. Selecteer de gewenste locatie in de lijst. In deze oefening wordt eastus gebruikt. Sla deze op in de variabele location voor toekomstig gebruik.
Get-AzLocation | Select-Object Location
$location = "eastus"
Een resourcegroep maken
Maak een resourcegroep met de opdracht New-AzResourceGroup.
Een Azure-resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd. Sla de naam van de resourcegroep op in een variabele voor toekomstig gebruik. In dit voorbeeld wordt er een resourcegroep met de naam howtoqueuesrg gemaakt in de regio eastus.
$resourceGroup = "howtoqueuesrg"
New-AzResourceGroup -ResourceGroupName $resourceGroup -Location $location
Een opslagaccount maken
Maak een standaardopslagaccount voor algemeen gebruik met lokaal redundante opslag (LRS) met behulp van New-AzStorageAccount. Haal de context van het opslagaccount op dat het opslagaccount definieert dat moet worden gebruikt. Als u werkt met een opslagaccount, verwijst u naar de context in plaats van herhaaldelijk de referenties op te geven.
$storageAccountName = "howtoqueuestorage"
$storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup `
-Name $storageAccountName `
-Location $location `
-SkuName Standard_LRS
$ctx = $storageAccount.Context
Een wachtrij maken
In het volgende voorbeeld wordt eerst een verbinding tot stand Azure Storage met behulp van de context van het opslagaccount, waaronder de naam van het opslagaccount en de toegangssleutel. Vervolgens wordt de cmdlet New-AzStorageQueue aanroepen om een wachtrij met de naam te howtoqueue maken.
$queueName = "howtoqueue"
$queue = New-AzStorageQueue –Name $queueName -Context $ctx
Zie Naming queues and metadata (Wachtrijen en metagegevens een naam geven) voor meer Storage naamgevingsconvents voorAzure Queue Storage.
Een wachtrij ophalen
U kunt een specifieke wachtrij of een lijst met alle wachtrijen in een opslagaccount opvragen en ophalen. De volgende voorbeelden laten zien hoe u alle wachtrijen in het opslagaccount en een specifieke wachtrij kunt ophalen; Beide opdrachten maken gebruik van de cmdlet Get-AzStorageQueue.
# Retrieve a specific queue
$queue = Get-AzStorageQueue –Name $queueName –Context $ctx
# Show the properties of the queue
$queue
# Retrieve all queues and show their names
Get-AzStorageQueue -Context $ctx | Select-Object Name
Een bericht toevoegen aan een wachtrij
Bewerkingen die van invloed zijn op de werkelijke berichten in de wachtrij, maken gebruik van de .NET-opslagclientbibliotheek zoals belicht in PowerShell. Als u een bericht wilt toevoegen aan een wachtrij, maakt u een nieuw exemplaar van het berichtobject, Microsoft.Azure.Storage.Queue.CloudQueueMessage klasse. Roep vervolgens de methode AddMessage aan. Een CloudQueueMessage kan worden gemaakt vanuit een tekenreeks (in UTF-8-indeling) of een byte-matrix.
In het volgende voorbeeld wordt gedemonstreerd hoe u een bericht toevoegt aan uw wachtrij.
# Create a new message using a constructor of the CloudQueueMessage class
$queueMessage = [Microsoft.Azure.Storage.Queue.CloudQueueMessage]::new("This is message 1")
# Add a new message to the queue
$queue.CloudQueue.AddMessageAsync($QueueMessage)
# Add two more messages to the queue
$queueMessage = [Microsoft.Azure.Storage.Queue.CloudQueueMessage]::new("This is message 2")
$queue.CloudQueue.AddMessageAsync($QueueMessage)
$queueMessage = [Microsoft.Azure.Storage.Queue.CloudQueueMessage]::new("This is message 3")
$queue.CloudQueue.AddMessageAsync($QueueMessage)
Als u de Azure Storage Explorergebruikt, 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 nemen.
Een bericht uit de wachtrij lezen en vervolgens verwijderen
Berichten worden gelezen in de volgorde 'best-try first-in-first-out'. Dit is niet gegarandeerd. Wanneer u het bericht uit de wachtrij leest, wordt het onzichtbaar voor alle andere processen die naar de wachtrij kijken. Dit zorgt ervoor dat als uw code het bericht niet kan verwerken vanwege een hardware- of softwarefout, een ander exemplaar van uw code hetzelfde bericht kan krijgen en het opnieuw kan proberen.
Deze time-out voor onzichtbaarheid bepaalt hoe lang het bericht onzichtbaar blijft voordat het weer beschikbaar is voor verwerking. De standaardwaarde is 30 seconden.
Uw code leest in twee stappen een bericht uit de wachtrij. Wanneer u de methode Microsoft.Azure.Storage.Queue.CloudQueue.GetMessage aanroept, krijgt u het volgende bericht in de wachtrij. Een bericht dat wordt geretourneerd GetMessage door wordt onzichtbaar voor andere code die berichten uit deze wachtrij leest. Als u het bericht uit de wachtrij wilt verwijderen, roept u de methode Microsoft.Azure.Storage.Queue.CloudQueue.DeleteMessage aan.
In het volgende voorbeeld leest u de drie wachtrijberichten door en wacht u tien seconden (de time-out voor onzichtbaarheid). Vervolgens leest u de drie berichten opnieuw en worden de berichten verwijderd nadat u ze hebt gelezen door aan te DeleteMessage roepen. Als u de wachtrij probeert te lezen nadat de berichten zijn verwijderd, wordt $queueMessage geretourneerd als $null .
# 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
$invisibleTimeout = [System.TimeSpan]::FromSeconds(10)
# Read the message from the queue, then show the contents of the message. Read the other two messages, too.
$queueMessage = $queue.CloudQueue.GetMessageAsync($invisibleTimeout,$null,$null)
$queueMessage.Result
$queueMessage = $queue.CloudQueue.GetMessageAsync($invisibleTimeout,$null,$null)
$queueMessage.Result
$queueMessage = $queue.CloudQueue.GetMessageAsync($invisibleTimeout,$null,$null)
$queueMessage.Result
# After 10 seconds, these messages reappear on the queue.
# Read them again, but delete each one after reading it.
# Delete the message.
$queueMessage = $queue.CloudQueue.GetMessageAsync($invisibleTimeout,$null,$null)
$queueMessage.Result
$queue.CloudQueue.DeleteMessageAsync($queueMessage.Result.Id,$queueMessage.Result.popReceipt)
$queueMessage = $queue.CloudQueue.GetMessageAsync($invisibleTimeout,$null,$null)
$queueMessage.Result
$queue.CloudQueue.DeleteMessageAsync($queueMessage.Result.Id,$queueMessage.Result.popReceipt)
$queueMessage = $queue.CloudQueue.GetMessageAsync($invisibleTimeout,$null,$null)
$queueMessage.Result
$queue.CloudQueue.DeleteMessageAsync($queueMessage.Result.Id,$queueMessage.Result.popReceipt)
Een wachtrij verwijderen
Als u een wachtrij en alle berichten erin wilt verwijderen, roept u de Remove-AzStorageQueue cmdlet aan. In het volgende voorbeeld ziet u hoe u de specifieke wachtrij verwijdert die in deze oefening wordt gebruikt met behulp van Remove-AzStorageQueue de cmdlet .
# Delete the queue
Remove-AzStorageQueue –Name $queueName –Context $ctx
Resources opschonen
Als u alle assets wilt verwijderen die u in deze oefening hebt gemaakt, verwijdert u de resourcegroep. Hiermee verwijdert u ook alle resources binnen de groep. In dit geval worden het gemaakte opslagaccount en de resourcegroep zelf verwijderd.
Remove-AzResourceGroup -Name $resourceGroup
Volgende stappen
In dit artikel hebt u meer geleerd over het basisbeheer van Queue Storage met PowerShell, waaronder:
- Een wachtrij maken
- Een wachtrij ophalen
- Een bericht toevoegen
- Lees het volgende bericht
- Een bericht verwijderen
- Een wachtrij verwijderen
Microsoft Azure PowerShell storage-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.