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 relativaDequeueCount
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 laDequeueCount
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.