Guide pratique pour utiliser Stockage File d’attente à partir de PowerShell

Le Stockage File d’attente est un service permettant de stocker un grand nombre de messages accessibles partout dans le monde via HTTP ou HTTPS. Pour plus d’informations, consultez Présentation du Stockage File d’attente. Ce guide pratique décrit les opérations courantes liées au Stockage File d’attente. Vous allez apprendre à effectuer les actions suivantes :

  • Créer une file d’attente
  • Récupérer une file d’attente
  • Ajouter un message
  • Lire un message
  • Supprimer un message
  • Suppression d'une file d'attente

Ce guide pratique nécessite le module Azure PowerShell (Az) version 7 ou ultérieure. Exécutez Get-Module -ListAvailable Az pour vérifier la version installée. Si vous devez effectuer une mise à niveau, consultez Installer le module Azure PowerShell.

Il n’existe aucune applet de commande PowerShell pour le plan de données des files d’attente. Pour effectuer des opérations de plan de données comme l’ajout, la lecture et la suppression d’un message, vous devez utiliser la bibliothèque cliente de stockage .NET exposée dans PowerShell. Vous créez un objet de message et vous pouvez alors utiliser des commandes comme AddMessage pour effectuer des opérations sur ce message. Cet article vous explique comment procéder.

Notes

Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour commencer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell depuis AzureRM vers Az.

Connexion à Azure

Connectez-vous à votre abonnement Azure avec la commande Connect-AzAccount et suivez les instructions à l’écran.

Connect-AzAccount

Récupérer la liste des régions

Si vous ne savez pas quelle localisation utiliser, affichez la liste des localisations disponibles. Dans la liste, trouvez celle que vous souhaitez utiliser. Cet exercice utilise eastus. Stockez cette région dans la variable location pour une utilisation ultérieure.

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

Créer un groupe de ressources

Créez un groupe de ressources avec la commande New-AzResourceGroup.

Un groupe de ressources Azure est un conteneur logique dans lequel les ressources Azure sont déployées et gérées. Stockez le nom du groupe de ressources dans une variable pour une utilisation ultérieure. Dans cet exemple, un groupe de ressources nommé howtoqueuesrg est créé dans la région eastus.

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

Créer un compte de stockage

Créez un compte de stockage universel standard avec un stockage localement redondant (LRS) à l’aide de New-AzStorageAccount. Obtenez le contexte du compte de stockage qui définit le compte de stockage à utiliser. Si un compte de stockage est utilisé, référencez le contexte au lieu d’entrer les informations d’identification à plusieurs reprises.

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

$ctx = $storageAccount.Context

Créer une file d’attente

L'exemple suivant établit d'abord une connexion à Azure Storage à l'aide du contexte de compte de stockage, ce qui inclut le nom de compte de stockage et sa clé d'accès. Ensuite, il appelle l’applet de commande New-AzStorageQueue pour créer une file d’attente nommée howtoqueue.

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

Pour plus d’informations sur les conventions de nommage qui s’appliquent au service Stockage File d’attente Azure, consultez Affectation de noms pour les files d’attente et les métadonnées.

Récupérer une file d’attente

Vous pouvez interroger et récupérer une file d’attente ou la liste de toutes les files d’attente d’un compte de stockage. Les exemples suivants montrent comment récupérer toutes les files d’attente dans le compte de stockage et une file d’attente spécifique ; les deux commandes utilisent l’applet de commande 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

Ajout d'un message à une file d'attente

Les opérations ayant un impact sur les messages réels dans la file d’attente utilisent la bibliothèque cliente de stockage .NET exposée dans PowerShell. Pour ajouter un message à une file d’attente, créez une nouvelle instance de l’objet message avec la classe Microsoft.Azure.Storage.Queue.CloudQueueMessage. Appelez ensuite la méthode AddMessage. Vous pouvez créer un CloudQueueMessage à partir d’une chaîne (au format UTF-8) ou d’un tableau d’octets.

L’exemple suivant montre comment ajouter un message à votre file d’attente.

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

Si vous utilisez l’Explorateur Stockage Azure, vous pouvez vous connecter à votre compte Azure et afficher les files d’attente dans le compte de stockage, puis en explorer une au niveau du détail pour afficher les messages qu’elle contient.

Lire un message de la file d’attente, puis le supprimer

Les messages sont lus, dans la mesure du possible, dans l’ordre du premier entré, premier sorti. Nous n’offrons aucune garantie. Quand vous lisez le message de la file d’attente, il devient invisible à tous les autres processus ciblant la file d’attente. De cette façon, si votre code ne parvient pas à traiter un message à cause d’une défaillance matérielle ou logicielle, une autre instance de votre code peut obtenir le même message et réessayer.

Cette période d’invisibilité définit la durée d’invisibilité du message avant qu’il ne redevienne disponible pour traitement. La valeur par défaut est 30 secondes.

Votre code lit un message dans la file d’attente en deux étapes. Lorsque vous appelez Microsoft.Azure.Storage.Queue.CloudQueue.GetMessage, vous obtenez le message suivant dans la file d’attente. Un message renvoyé par GetMessage devient invisible par les autres codes lisant les messages de cette file d'attente. Pour finaliser la suppression du message de la file d’attente, appelez la méthode Microsoft.Azure.Storage.Queue.CloudQueue.DeleteMessage.

Dans l’exemple suivant, vous lisez les trois messages de la file d’attente, puis attendez 10 secondes (période d’invisibilité). Ensuite, quand vous relisez les trois messages, vous les supprimez un à un en appelant DeleteMessage. Si vous essayez de lire la file d’attente une fois les messages supprimés, $queueMessage retournera la valeur $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)

Suppression d'une file d'attente

Pour supprimer une file d’attente et tous les messages qu’elle contient, appelez l’applet de commande Remove-AzStorageQueue. L’exemple suivant montre comment supprimer la file d’attente utilisée dans cet exercice à l’aide de l’applet de commande Remove-AzStorageQueue.

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

Nettoyer les ressources

Pour supprimer toutes les ressources que vous avez créées dans cet exercice, supprimez le groupe de ressources. Cette opération supprime également toutes les ressources contenues dans le groupe. Dans le cas présent, le compte de stockage créé et le groupe de ressources sont supprimés.

Remove-AzResourceGroup -Name $resourceGroup

Étapes suivantes

Ce guide pratique vous a présenté les bases de la gestion Stockage File d’attente avec PowerShell. Vous avez notamment appris à effectuer les tâches suivantes :

  • Créer une file d’attente
  • Récupérer une file d’attente
  • Ajouter un message
  • Lire le message suivant
  • Supprimer un message
  • Suppression d'une file d'attente

Applets de commande de stockage Microsoft Azure PowerShell

Explorateur Stockage Microsoft Azure

  • Microsoft Azure Storage Explorer est une application autonome et gratuite de Microsoft qui vous permet d’exploiter visuellement les données de Stockage Azure sur Windows, macOS et Linux.