Delen via


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

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

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 howtoqueuestoragegebruikt. 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 verhogen DequeueCount . 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 verhogen DequeueCount .

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.