Condividi tramite


Come usare Archiviazione di accodamento di Azure da PowerShell

La coda di Azure Archiviazione è un servizio per l'archiviazione di un numero elevato di messaggi a cui è possibile accedere da qualsiasi parte del mondo tramite HTTP o HTTPS. Per informazioni dettagliate, vedere Introduction to Azure Queue Archiviazione (Introduzione alle Archiviazione code di Azure). Questo articolo di procedure illustra le operazioni comuni di accodamento Archiviazione. Scopri come:

  • Crea una coda
  • Recuperare una coda
  • Aggiungere messaggi
  • Recuperare messaggi
  • Eliminare un messaggio
  • Eliminare una coda

Questa guida pratica richiede il modulo Azure PowerShell (Az) v12.0.0. Eseguire Get-Module -ListAvailable Az per trovare la versione attualmente installata. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell.

Non sono disponibili cmdlet di PowerShell per il piano dati per le code. Per eseguire le operazioni del piano dati come aggiungere, leggere ed eliminare un messaggio, è necessario usare la libreria client di dell'archivio .NET come mostrato in PowerShell. Si crea un oggetto messaggio e quindi è possibile usare comandi come AddMessage per eseguire operazioni su tale messaggio. Questo articolo mostra come eseguire questa operazione.

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Accedere ad Azure

Accedere alla sottoscrizione di Azure con il comando Connect-AzAccount e seguire le istruzioni visualizzate. Se necessario, è possibile specificare una sottoscrizione aggiungendo i TenantId parametri e Subscription e includendo i rispettivi valori.

Connect-AzAccount

Recuperare un elenco di posizioni

Se non si conosce la posizione da usare, è possibile elencare i percorsi disponibili usando il Get-AzLocation cmdlet come illustrato nell'esempio fornito. Dopo aver visualizzato l'elenco, scegliere una posizione e archiviarla nella location variabile per un uso futuro. Gli esempi in questo esercizio usano la eastus posizione.

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

Creare un gruppo di risorse

Un gruppo di risorse di Azure è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite. Scegliere un nome per il gruppo di risorse e archiviarlo nella resourceGroup variabile per un uso futuro. Questo esempio usa il nome howtoqueuesrg.

Creare un gruppo di risorse chiamando il cmdlet New-AzResourceGroup e specificando il nome e il percorso del ResourceGroupName parametro, come illustrato.

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

Creare un account di archiviazione

Un account di archiviazione di Azure è una risorsa denominata in modo univoco che contiene tutti gli oggetti dati come BLOB, file, code e tabelle.

Scegliere un nome per l'account di archiviazione e archiviarlo nella storageAccountName variabile per un uso futuro. Questo esempio usa il nome howtoqueuestorage.

Creare quindi un account di archiviazione standard per utilizzo generico con archiviazione con ridondanza locale usando il cmdlet New-Az Archiviazione Account. Infine, impostare il contesto dell'account di archiviazione che definisce l'account di archiviazione, salvandolo nella ctx variabile. Fare riferimento al contesto con la variabile consente di eseguire operazioni su un account di archiviazione senza fornire ripetutamente le credenziali.

$storageAccountName = "howtoqueuestorage"

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

$ctx = $storageAccount.Context

Crea una coda

In primo luogo, scegliere un nome per l'account di archiviazione e archiviarlo nella queueName variabile. Questo esempio usa il nome howtoqueuestorage. Creare quindi una coda usando il cmdlet New-Az Archiviazione Queue e passando le queueName variabili e ai Name parametri e ctx Context come illustrato.

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

Per informazioni sulle convenzioni di denominazione per Archiviazione di accodamento di Azure, vedere Denominazione di code e metadati.

Recuperare una coda

È possibile usare il cmdlet Get-Az Archiviazione Queue per recuperare una coda specifica o un elenco di tutte le code all'interno di un account di archiviazione. Gli esempi seguenti illustrano come recuperare tutte le code usando il Get-AzStorageQueue cmdlet e come specificare una coda usando Name il parametro .

# 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

Aggiungere messaggi a una coda

Le operazioni che influisce sui messaggi in una coda usano la libreria client di archiviazione .NET come esposta in PowerShell. Per aggiungere un messaggio a una coda, passare il messaggio come stringa al QueueClient metodo della SendMessage classe.

La stringa del messaggio deve essere in formato UTF-8.

Nell'esempio seguente viene illustrato come aggiungere messaggi alla coda.

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

Se si usa Azure Storage Explorer, è possibile connettersi al proprio account Azure, visualizzare le code nell'account di archiviazione ed eseguire il drill-down in una di esse per visualizzare i messaggi contenuti nella coda.

Recuperare messaggi da una coda

Anche se non sempre garantito, i messaggi vengono recuperati da una coda in ordine di primo tentativo.

A seconda del caso d'uso, è possibile recuperare uno o più messaggi da una coda. È anche possibile modificare la visibilità dei messaggi, consentendo o impedendo ad altri processi di accedere allo stesso messaggio.

Esistono due modi per recuperare i messaggi da una coda:

  • Ricezione: recupero di un messaggio tramite Receive la rimozione dalla coda del messaggio e incremento della relativa DequeueCount proprietà. A meno che un messaggio non venga eliminato, viene reinsertato nella coda per essere elaborato di nuovo.
  • Visualizza: il recupero di un messaggio tramite Peek consente di "visualizzare in anteprima" i messaggi dalla coda. Peek non esegue la coda del messaggio o ne incrementa la DequeueCount proprietà.

Ricevere messaggi

Quando si legge un messaggio da una coda usando un metodo come ReceiveMessage, il messaggio viene temporaneamente dequeued e diventa temporaneamente invisibile ad altri processi. Questo timeout di visibilità definisce per quanto tempo il messaggio rimane invisibile. Il timeout di visibilità predefinito è di 30 secondi.

Se il messaggio non viene elaborato prima del passaggio del timeout della visibilità, la relativa DequeueCount proprietà viene incrementata e viene reinsertata alla fine della coda. La reinserzione dello stesso messaggio garantisce che un altro processo possa recuperare lo stesso messaggio e riprovare.

Nell'esempio seguente la variabile invisibleTimeout viene impostata su 10 secondi, quindi vengono letti due messaggi dalla coda.

# 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

È possibile recuperare più messaggi dalla coda contemporaneamente usando il ReceiveMessages metodo e passando e il valore intero per specificare il numero massimo di messaggi da restituire.

# 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

Visualizzare i messaggi

Per i casi d'uso che potrebbero comportare code condivise o messaggi di anteprima senza modificarne la visibilità, è possibile usare i PeekMessage metodi e PeekMessages . Come nell'esempio precedente ReceiveMessages , è possibile visualizzare più messaggi contemporaneamente passando un valore intero per specificare il numero massimo di messaggi.

Negli esempi seguenti vengono usati sia i PeekMessage metodi e PeekMessages per recuperare i messaggi da una coda.

# 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

Eliminare messaggi da una coda

Per evitare l'eliminazione accidentale, è necessario specificare sia le MessageId proprietà che PopReceipt le proprietà prima di eliminare definitivamente un messaggio. A causa di questo requisito, è più semplice eliminare un messaggio usando un processo in due passaggi.

Prima di tutto, recuperare il messaggio successivo nella coda chiamando i ReceiveMessage metodi o ReceiveMessages . Per completare la rimozione del messaggio dalla coda, passare i valori ottenuti dal messaggio al DeleteMessage metodo .

Questo processo è illustrato negli esempi seguenti.

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

Eliminare una coda

Per eliminare una coda e tutti i messaggi contenuti, chiamare il QueueClient metodo della Delete classe. Nell'esempio seguente viene illustrato come eliminare la coda specifica usata in questo esercizio.

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

Pulire le risorse

Rimuovere il gruppo di risorse per eliminare gli asset e le risorse creati in questo esercizio. In questo caso, vengono eliminati anche l'account di archiviazione e il gruppo di risorse stesso.

Remove-AzResourceGroup -Name $resourceGroup

Passaggi successivi

In questo articolo sulle procedure si è appresa la gestione di base di Queue Archiviazione con PowerShell, inclusa la procedura:

  • Crea una coda
  • Recuperare una coda
  • Aggiungere messaggi
  • Leggere i messaggi
  • Eliminare messaggi
  • Eliminare una coda

Cmdlet di archiviazione di Microsoft Azure PowerShell

Microsoft Azure Storage Explorer

  • Microsoft Azure Storage Explorer è un'app autonoma gratuita di Microsoft che consente di rappresentare facilmente dati di Archiviazione di Azure in Windows, macOS e Linux.