Freigeben über


Verwenden von Azure Queue Storage mit PowerShell

Azure Queue Storage ist ein Dienst zur Speicherung einer großen Anzahl von Nachrichten, auf die von überall auf der Welt über HTTP oder HTTPS zugegriffen werden kann. Weitere Informationen finden Sie unter Was ist Azure Queue Storage?. In dieser Anleitung werden häufige Vorgänge für Queue Storage behandelt. Folgendes wird vermittelt:

  • Erstellen einer Warteschlange
  • Abrufen einer Warteschlange
  • Hinzufügen von Nachrichten
  • Abrufen von Nachrichten
  • Löschen von Nachrichten
  • Löschen einer Warteschlange

Für diese Anleitung ist das Azure PowerShell-Modul (Az) v12.0.0 oder höher erforderlich. Führen Sie Get-Module -ListAvailable Az aus, um die derzeit installierte Version zu finden. Wenn Sie ein Upgrade ausführen müssen, finden Sie unter Installieren des Azure PowerShell-Moduls Informationen dazu.

Es gibt keine PowerShell-Cmdlets für die Datenebene für Warteschlangen. Sie müssen die .NET-Speicherclientbibliothek wie in PowerShell verwenden, um Vorgänge auf Datenebene durchführen zu können, z. B. Nachricht hinzufügen, Nachricht lesen und Nachricht löschen. Sie erstellen ein Nachrichtenobjekt und können dann Befehle wie AddMessage verwenden, um Vorgänge für diese Nachricht auszuführen. In diesem Artikel erfahren Sie, wie Sie dabei vorgehen.

Hinweis

Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Anmelden bei Azure

Melden Sie sich mit dem Befehl Connect-AzAccount bei Ihrem Azure-Abonnement an, und befolgen Sie die Anweisungen auf dem Bildschirm. Bei Bedarf können Sie ein Abonnement angeben, indem Sie die Parameter TenantId und Subscription, sowie die entsprechenden Werte hinzufügen.

Connect-AzAccount

Abrufen einer Liste von Speicherorten

Wenn Sie nicht wissen, welchen Speicherort Sie verwenden möchten, können Sie die verfügbaren Speicherorte mithilfe des Cmdlets Get-AzLocation auflisten, wie im Beispiel gezeigt. Nachdem die Liste angezeigt wurde, wählen Sie einen Speicherort aus und speichern ihn in der Variablen location für die zukünftige Verwendung. In den Beispielen in dieser Übung wird der Speicherort eastus verwendet.

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

Erstellen einer Ressourcengruppe

Eine Azure-Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen bereitgestellt und verwaltet werden. Wählen Sie einen Namen für Ihre Ressourcengruppe aus, und speichern Sie ihn in der Variablen resourceGroup für die zukünftige Verwendung. In diesem Beispiel wird der Name howtoqueuesrgverwendet.

Erstellen Sie eine Ressourcengruppe, indem Sie das Cmdlet New-AzResourceGroup aufrufen und den Namen und Speicherort für den ResourceGroupName-Parameter angeben, wie dargestellt.

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

Erstellen eines Speicherkontos

Ein Azure-Speicherkonto ist eine eindeutig benannte Ressource, die alle Datenobjekte als Blobs, Dateien, Warteschlangen und Tabellen enthält.

Wählen Sie einen Namen für Ihr Speicherkonto aus und speichern Sie ihn in der Variablen storageAccountName für die zukünftige Verwendung. In diesem Beispiel wird der Name howtoqueuestorageverwendet.

Erstellen Sie als Nächstes ein standardmäßiges allgemeines Speicherkonto mit lokal redundantem Speicher (LRS) mit dem Cmdlet New-AzStorageAccount. Legen Sie schließlich den Speicherkontokontext fest, der das Speicherkonto definiert und es in der Variablen ctx speichert. Durch Verweisen auf den Kontext mit der Variablen können Sie Vorgänge für ein Speicherkonto ausführen, ohne wiederholt Anmeldeinformationen bereitzustellen.

$storageAccountName = "howtoqueuestorage"

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

$ctx = $storageAccount.Context

Erstellen einer Warteschlange

Wählen Sie zunächst einen Namen für Ihr Speicherkonto aus und speichern Sie ihn in der Variablen queueName. In diesem Beispiel wird der Name howtoqueuestorageverwendet. Erstellen Sie als Nächstes eine Warteschlange mit dem Cmdlet New-AzStorageQueue und übergeben Sie die queueName- und ctxVariablen an die Name- und Context-Parameter, wie dargestellt.

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

Informationen zu Namenskonventionen für Azure Queue Storage finden Sie unter Benennen von Warteschlangen und Metadaten.

Abrufen einer Warteschlange

Mit dem Cmdlet Get-AzStorageQueue können Sie eine bestimmte Warteschlange oder eine Liste aller Warteschlangen innerhalb eines Speicherkontos abrufen. Die folgenden Beispiele veranschaulichen das Abrufen aller Warteschlangen mithilfe des Get-AzStorageQueue-Cmdlets und das Angeben einer Warteschlange mithilfe des Name-Parameters.

# 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

Hinzufügen von Nachrichten zu einer Warteschlange

Vorgänge, die sich auf die Nachrichten in einer Warteschlange auswirken, verwenden die .NET-Speicherclientbibliothek, wie sie in PowerShell bereitgestellt wird. Um einer Warteschlange eine Nachricht hinzuzufügen, übergeben Sie Ihre Nachricht als Zeichenfolge an die SendMessage-Methode der QueueClient-Klasse.

Ihre Nachrichtenzeichenfolge muss im UTF-8-Format vorliegen.

Im folgenden Beispiel wird veranschaulicht, wie Nachrichten zu Ihrer Warteschlange hinzugefügt werden.

# 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($_)}

Wenn Sie Azure Storage-Explorer verwenden, können Sie sich mit Ihrem Azure-Konto verbinden, die Warteschlangen im Speicherkonto anzeigen und für eine Warteschlange einen Drilldown durchführen, um die Nachrichten in der Warteschlange anzuzeigen.

Abrufen von Nachrichten aus einer Warteschlange

Obwohl es nicht immer garantiert ist, werden Nachrichten aus einer Warteschlange in best-try, first-in-first-out-Reihenfolge abgerufen.

Je nach Anwendungsfall können Sie eine oder mehrere Nachrichten aus einer Warteschlange abrufen. Sie können auch die Sichtbarkeit der Nachrichten ändern, indem Sie entweder zulassen oder verhindern, dass andere Prozesse auf dieselbe Nachricht zugreifen.

Es gibt zwei Möglichkeiten zum Abrufen von Nachrichten aus einer Warteschlange:

  • Empfangen: Abrufen einer Nachricht mithilfe von Receive entfernt die Nachricht aus der Warteschlange und erhöht ihre DequeueCount-Eigenschaft. Sofern eine Nachricht nicht gelöscht wird, wird sie erneut in die Warteschlange eingefügt, damit sie erneut verarbeitet werden kann.
  • Vorschau: Durch das Abrufen einer Nachricht mithilfe von Peek können Sie Nachrichten aus der Warteschlange „in der Vorschau anzeigen“. Peek entfernt die Nachricht nicht aus der Warteschlange und erhöht nicht seine DequeueCount-Eigenschaft.

Empfangen von Nachrichten

Wenn Sie eine Nachricht aus einer Warteschlange mithilfe einer Methode wie ReceiveMessage lesen, wird die Nachricht vorübergehend aus der Warteschlange entfernen und wird vorübergehend für andere Prozesse unsichtbar. Dieses Sichtbarkeitstimeout definiert, wie lange die Nachricht unsichtbar bleibt. Das standardmäßige Sichtbarkeitstimeout beträgt 30 Sekunden.

Wenn die Nachricht erst verarbeitet wird, wenn das Sichtbarkeitszeitlimit überschritten wird, wird die DequeueCount-Eigenschaft erhöht und am Ende der Warteschlange erneut eingefügt. Durch erneutes Senden derselben Nachricht wird sichergestellt, dass ein anderer Prozess dieselbe Nachricht abrufen und es erneut versuchen kann.

Im folgenden Beispiel wird die invisibleTimeout-Variable auf 10 Sekunden festgelegt und dann zwei Nachrichten aus der Warteschlange gelesen.

# 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

Sie können mehrere Nachrichten gleichzeitig aus der Warteschlange abrufen, indem Sie die ReceiveMessages-Methode verwenden und den ganzzahligen Wert übergeben, um die maximale Anzahl der zurückzugebenden Nachrichten anzugeben.

# 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

Peek Messages

Bei Anwendungsfällen, die freigegebene Warteschlangen oder die Vorschau von Nachrichten umfassen können, ohne ihre Sichtbarkeit zu ändern, können Sie die Methoden PeekMessage und PeekMessages verwenden. Wie im vorherigen ReceiveMessages-Beispiel können mehrere Nachrichten gleichzeitig angezeigt werden, indem ein ganzzahliger Wert übergeben wird, um die maximale Anzahl von Nachrichten anzugeben.

In den folgenden Beispielen werden sowohl die Nachrichten als auch die PeekMessage- und PeekMessages-Methoden zum Abrufen von Nachrichten aus einer Warteschlange verwendet.

# 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

Löschen von Nachrichten aus einer Warteschlange

Um versehentliche Löschungen zu verhindern, müssen die Eigenschaften MessageId und PopReceipt angegeben werden, bevor eine Nachricht endgültig gelöscht wird. Aufgrund dieser Anforderung ist es am einfachsten, eine Nachricht mithilfe eines zweistufigen Prozesses zu löschen.

Rufen Sie zuerst die nächste Nachricht in der Warteschlange ab, indem Sie die ReceiveMessage- oder ReceiveMessages-Methode aufrufen. Um das Entfernen der Nachricht aus der Warteschlange abzuschließen, übergeben Sie die von der Nachricht erhaltenen Werte an die DeleteMessage-Methode.

Dieser Prozess wird im folgenden Beispiel veranschaulicht.

# 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)}

Löschen einer Warteschlange

Um eine Warteschlange und alle darin enthaltenen Nachrichten zu löschen, rufen Sie die Delete-Methode der QueueClient-Klasse auf. Das folgende Beispiel zeigt, wie die in dieser Übung verwendete Warteschlange gelöscht wird.

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

Bereinigen von Ressourcen

Entfernen Sie die Ressourcengruppe, um die in dieser Übung erstellten Objekte und Ressourcen zu löschen. In diesem Fall werden auch das Speicherkonto und die Ressourcengruppe selbst gelöscht.

Remove-AzResourceGroup -Name $resourceGroup

Nächste Schritte

In dieser Anleitung haben Sie Folgendes über die grundlegende Verwaltung von Queue Storage mit PowerShell gelernt:

  • Erstellen einer Warteschlange
  • Abrufen einer Warteschlange
  • Hinzufügen von Nachrichten
  • Lesen von Nachrichten
  • Löschen von Nachrichten
  • Löschen einer Warteschlange

Microsoft Azure PowerShell-Speichercmdlets

Microsoft Azure Storage-Explorer

  • Beim Microsoft Azure Storage-Explorer handelt es sich um eine kostenlose eigenständige App von Microsoft, über die Sie ganz einfach visuell mit Azure Storage-Daten arbeiten können – unter Windows, MacOS und Linux.