Jak używać usługi Azure Queue Storage z poziomu programu PowerShell

Azure Queue Storage to usługa do przechowywania dużej liczby komunikatów, do których można uzyskać dostęp z dowolnego miejsca na świecie za pośrednictwem protokołu HTTP lub HTTPS. Aby uzyskać szczegółowe informacje, zobacz Wprowadzenie do usługi Azure Queue Storage. W tym artykule z instrukcjami opisano typowe operacje usługi Queue Storage. Omawiane kwestie:

  • Tworzenie kolejki
  • Pobieranie kolejki
  • Dodawanie komunikatu
  • Odczytywanie wiadomości
  • Usuwanie wiadomości
  • Usuwanie kolejki

Ten przewodnik z instrukcjami wymaga modułu Azure PowerShell (Az) w wersji 0.7 lub nowszej. Uruchom polecenie Get-Module -ListAvailable Az , aby znaleźć aktualnie zainstalowaną wersję. Jeśli konieczne będzie uaktualnienie, zobacz Instalowanie modułu Azure PowerShell.

Brak poleceń cmdlet programu PowerShell dla płaszczyzny danych dla kolejek. Aby wykonać operacje płaszczyzny danych, takie jak dodawanie komunikatu, odczytywanie komunikatu i usuwanie komunikatu, należy użyć biblioteki klienta magazynu platformy .NET, która jest uwidoczniona w programie PowerShell. Utworzysz obiekt komunikatu, a następnie możesz użyć poleceń, takich jak AddMessage do wykonywania operacji na tym komunikacie. W tym artykule pokazano, jak to zrobić.

Uwaga

Zalecamy korzystanie z modułu Azure Az programu PowerShell do interakcji z platformą Azure. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Logowanie do platformy Azure

Zaloguj się do subskrypcji platformy Azure za pomocą polecenia Connect-AzAccount i postępuj zgodnie z instrukcjami wyświetlanymi na ekranie.

Connect-AzAccount

Pobieranie listy lokalizacji

Jeśli nie wiesz, której lokalizacji użyć, możesz wyświetlić listę dostępnych lokalizacji. Po wyświetleniu listy znajdź lokalizację, której chcesz użyć. W tym ćwiczeniu zostanie użyta funkcja eastus. Zapisz to w zmiennej location do użycia w przyszłości.

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

Tworzenie grupy zasobów

Utwórz grupę zasobów za pomocą polecenia New-AzResourceGroup.

Grupa zasobów platformy Azure to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi. Zapisz nazwę grupy zasobów w zmiennej do użycia w przyszłości. W tym przykładzie grupa zasobów o nazwie howtoqueuesrg zostanie utworzona w regionie eastus.

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

Tworzenie konta magazynu

Utwórz standardowe konto magazynu ogólnego przeznaczenia z magazynem lokalnie nadmiarowym (LRS) przy użyciu polecenia New-AzStorageAccount. Pobierz kontekst konta magazynu, który definiuje konto magazynu do użycia. Wykonując działania względem konta magazynu, możesz odwoływać się do kontekstu, zamiast wielokrotnie podawać poświadczenia.

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

$ctx = $storageAccount.Context

Tworzenie kolejki

Poniższy przykład najpierw ustanawia połączenie z usługą Azure Storage przy użyciu kontekstu konta magazynu, który zawiera nazwę konta magazynu i jego klucz dostępu. Następnie wywołuje polecenie cmdlet New-AzStorageQueue , aby utworzyć kolejkę o nazwie howtoqueue.

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

Aby uzyskać informacje na temat konwencji nazewnictwa dla usługi Azure Queue Storage, zobacz Nazewnictwo kolejek i metadanych.

Pobieranie kolejki

Możesz wykonywać zapytania i pobierać określoną kolejkę lub listę wszystkich kolejek na koncie magazynu. W poniższych przykładach pokazano, jak pobrać wszystkie kolejki na koncie magazynu i określoną kolejkę; Oba polecenia używają polecenia cmdlet 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

Dodawanie komunikatu do kolejki

Operacje wpływające na rzeczywiste komunikaty w kolejce używają biblioteki klienta magazynu platformy .NET w sposób uwidoczniony w programie PowerShell. Aby dodać komunikat do kolejki, utwórz nowe wystąpienie obiektu komunikatu, Microsoft.Azure.Storage.Queue.CloudQueueMessage klasa . Następnie wywołaj metodę AddMessage . Element CloudQueueMessage można utworzyć na podstawie ciągu (w formacie UTF-8) lub tablicy bajtów.

W poniższym przykładzie pokazano, jak dodać komunikat do kolejki.

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

Jeśli używasz Eksplorator usługi Azure Storage, możesz nawiązać połączenie z kontem platformy Azure i wyświetlić kolejki na koncie magazynu, a następnie przejść do szczegółów kolejki, aby wyświetlić komunikaty w kolejce.

Odczytywanie komunikatu z kolejki, a następnie usuwanie go

Komunikaty są odczytywane w kolejności "pierwszy na pierwszy na wyjęcie". Nie jest to gwarantowane. Podczas odczytywania komunikatu z kolejki staje się niewidoczny dla wszystkich innych procesów analizujących kolejkę. Gwarantuje to, że jeśli kod nie przetworzy komunikatu z powodu awarii sprzętu lub oprogramowania, inne wystąpienie kodu może uzyskać ten sam komunikat i spróbować ponownie.

Ten limit czasu widoczności określa, jak długo komunikat pozostaje niewidoczny, zanim będzie ponownie dostępny do przetworzenia. Wartość domyślna to 30 sekund.

Kod odczytuje komunikat z kolejki w dwóch krokach. Po wywołaniu Microsoft.Azure.Storage.Queue.CloudQueue.GetMessage metody zostanie wyświetlony następny komunikat w kolejce. Zwrócony komunikat staje GetMessage się niewidoczny dla każdego innego kodu odczytujący komunikaty z tej kolejki. Aby zakończyć usuwanie komunikatu z kolejki, należy wywołać metodę Microsoft.Azure.Storage.Queue.CloudQueue.DeleteMessage .

W poniższym przykładzie odczytujesz trzy komunikaty w kolejce, a następnie odczekasz 10 sekund (limit czasu widoczności). Następnie ponownie odczytasz trzy komunikaty, usuwając komunikaty po ich odczytaniu, wywołując metodę DeleteMessage. Jeśli spróbujesz odczytać kolejkę po usunięciu komunikatów, $queueMessage zostanie zwrócony jako $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)

Usuwanie kolejki

Aby usunąć kolejkę i wszystkie zawarte w niej komunikaty, wywołaj Remove-AzStorageQueue polecenie cmdlet . W poniższym przykładzie pokazano, jak usunąć określoną kolejkę używaną w tym ćwiczeniu przy użyciu Remove-AzStorageQueue polecenia cmdlet .

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

Czyszczenie zasobów

Aby usunąć wszystkie zasoby utworzone w tym ćwiczeniu, usuń grupę zasobów. Spowoduje to również usunięcie wszystkich zasobów znajdujących się w grupie. W takim przypadku usuwa ono utworzone konto magazynu i samą grupę zasobów.

Remove-AzResourceGroup -Name $resourceGroup

Następne kroki

W tym artykule z instrukcjami przedstawiono podstawowe informacje na temat zarządzania usługą Queue Storage przy użyciu programu PowerShell, w tym instrukcje:

  • Tworzenie kolejki
  • Pobieranie kolejki
  • Dodawanie komunikatu
  • Przeczytaj następną wiadomość
  • Usuwanie wiadomości
  • Usuwanie kolejki

polecenia cmdlet magazynu Microsoft Azure PowerShell

Microsoft Azure Storage Explorer

  • Microsoft Azure Storage Explorer jest bezpłatną aplikacją autonomiczną oferowaną przez firmę Microsoft, która umożliwia wizualną pracę z danymi w usłudze Azure Storage w systemach Windows, macOS i Linux.