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 uzyskiwać 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. Dowiedz się, jak odbywa się:
- Utwórz kolejkę
- Pobieranie kolejki
- Dodawanie komunikatów
- Pobieranie komunikatów
- Usuwanie komunikatów
- Usuwanie kolejki
Ten przewodnik z instrukcjami wymaga modułu Azure PowerShell (Az
) w wersji 12.0.0. 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 .NET, która jest uwidoczniona w programie PowerShell. Utworzysz obiekt komunikatu, a następnie możesz użyć poleceń, takich jak AddMessage
wykonywanie operacji na tym komunikacie. W tym artykule pokazano, jak to zrobić.
Uwaga
Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Aby rozpocząć, zobacz Instalowanie programu Azure PowerShell. 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 się do platformy Azure
Zaloguj się do subskrypcji platformy Azure za pomocą polecenia Connect-AzAccount
i postępuj zgodnie z instrukcjami wyświetlanymi na ekranie. W razie potrzeby możesz określić subskrypcję, dodając TenantId
parametry i Subscription
oraz uwzględniając odpowiednie wartości.
Connect-AzAccount
Pobieranie listy lokalizacji
Jeśli nie wiesz, której lokalizacji chcesz użyć, możesz wyświetlić listę dostępnych lokalizacji przy użyciu Get-AzLocation
polecenia cmdlet, jak pokazano w podanym przykładzie. Po wyświetleniu listy wybierz lokalizację i zapisz ją w zmiennej location
do użycia w przyszłości. Przykłady w tym ćwiczeniu używają eastus
lokalizacji.
Get-AzLocation | Select-Object Location
$location = "eastus"
Tworzenie grupy zasobów
Grupa zasobów platformy Azure to logiczny kontener przeznaczony do wdrażania zasobów platformy Azure i zarządzania nimi. Wybierz nazwę grupy zasobów i zapisz ją w zmiennej resourceGroup
do użycia w przyszłości. W tym przykładzie użyto nazwy howtoqueuesrg
.
Utwórz grupę zasobów, wywołując polecenie cmdlet New-AzResourceGroup i podając nazwę i lokalizację parametru ResourceGroupName
, jak pokazano poniżej.
$resourceGroup = "howtoqueuesrg"
New-AzResourceGroup -ResourceGroupName $resourceGroup -Location $location
Tworzenie konta magazynu
Konto usługi Azure Storage to unikatowy nazwany zasób, który zawiera wszystkie obiekty danych jako obiekty blob, pliki, kolejki i tabele.
Wybierz nazwę konta magazynu i zapisz ją w zmiennej storageAccountName
do użycia w przyszłości. W tym przykładzie użyto nazwy howtoqueuestorage
.
Następnie utwórz standardowe konto magazynu ogólnego przeznaczenia z magazynem lokalnie nadmiarowym (LRS) przy użyciu polecenia cmdlet New-AzStorageAccount . Na koniec ustaw kontekst konta magazynu, który definiuje konto magazynu, zapisując go w zmiennej ctx
. Odwoływanie się do kontekstu za pomocą zmiennej umożliwia wykonywanie operacji na koncie magazynu bez wielokrotnego podawania poświadczeń.
$storageAccountName = "howtoqueuestorage"
$storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup `
-Name $storageAccountName `
-Location $location `
-SkuName Standard_LRS
$ctx = $storageAccount.Context
Utwórz kolejkę
Najpierw wybierz nazwę konta magazynu i zapisz ją w zmiennej queueName
. W tym przykładzie użyto nazwy howtoqueuestorage
. Następnie utwórz kolejkę przy użyciu polecenia cmdlet New-AzStorageQueue i przekazując queueName
zmienne i ctx
do Name
parametrów i Context
, jak pokazano.
$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 użyć polecenia cmdlet Get-AzStorageQueue , aby pobrać określoną kolejkę lub listę wszystkich kolejek w ramach konta magazynu. W poniższych przykładach pokazano, jak pobrać wszystkie kolejki przy użyciu Get-AzStorageQueue
polecenia cmdlet oraz jak określić kolejkę przy użyciu Name
parametru .
# 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
Dodawanie komunikatów do kolejki
Operacje wpływające na komunikaty w kolejce używają biblioteki klienta magazynu .NET, która jest uwidoczniona w programie PowerShell. Aby dodać komunikat do kolejki, przekaż komunikat jako ciąg do QueueClient
metody klasy SendMessage
.
Ciąg wiadomości musi być w formacie UTF-8.
W poniższym przykładzie pokazano, jak dodać komunikaty do kolejki.
# 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($_)}
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 kolejki, aby wyświetlić komunikaty w kolejce.
Pobieranie komunikatów z kolejki
Chociaż nie zawsze gwarantowane, komunikaty są pobierane z kolejki w kolejności najlepszych prób, pierwszy w pierwszej kolejności .
W zależności od przypadku użycia można pobrać jeden lub więcej komunikatów z kolejki. Można również zmodyfikować widoczność komunikatów, zezwalając na dostęp do tego samego komunikatu lub uniemożliwiając innym procesom dostęp do tego samego komunikatu.
Istnieją dwa sposoby pobierania komunikatów z kolejki:
- Odbierz: pobieranie komunikatu przy użyciu
Receive
dequeues komunikatu i zwiększa jegoDequeueCount
właściwość. Jeśli komunikat nie zostanie usunięty, zostanie ponownie ponownie przetworzony w kolejce. - Zobacz: Pobieranie komunikatu przy użyciu polecenia
Peek
umożliwia "podgląd" komunikatów z kolejki.Peek
nie kolejkuje komunikatu ani nie zwiększa jegoDequeueCount
właściwości.
Odbieranie komunikatów
Podczas odczytywania komunikatu z kolejki przy użyciu metody, takiej jak ReceiveMessage
, komunikat jest tymczasowo dequeued i staje się tymczasowo niewidoczny dla innych procesów. Ten limit czasu widoczności określa, jak długo komunikat pozostaje niewidoczny. Domyślny limit czasu widoczności wynosi 30 sekund.
Jeśli komunikat nie jest przetwarzany przed upływem limitu czasu widoczności, jego DequeueCount
właściwość jest zwiększana i jest ponownie przekazywana na końcu kolejki. Ponowne przesłanie tego samego komunikatu gwarantuje, że inny proces może pobrać ten sam komunikat i spróbować ponownie.
Poniższy przykład ustawia zmienną invisibleTimeout na 10 sekund, a następnie odczytuje dwa komunikaty z kolejki.
# 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
Jednocześnie można pobrać wiele komunikatów z kolejki przy użyciu ReceiveMessages
metody i przekazywania i liczby całkowitej, aby określić maksymalną liczbę komunikatów do zwrócenia.
# 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
Podgląd komunikatów
W przypadku przypadków użycia, które mogą obejmować udostępnione kolejki lub wyświetlanie podglądu komunikatów bez zmiany ich widoczności, można użyć PeekMessage
metod i PeekMessages
. Podobnie jak w poprzednim ReceiveMessages
przykładzie, wiele komunikatów można wyświetlić jednocześnie, przekazując wartość całkowitą, aby określić maksymalną liczbę komunikatów.
W poniższych przykładach użyto PeekMessage
metod i do PeekMessages
pobierania komunikatów z kolejki.
# 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
Usuwanie komunikatów z kolejki
Aby zapobiec przypadkowemu usunięciu, należy podać właściwości MessageId
i PopReceipt
przed trwałym usunięciem komunikatu. Ze względu na to wymaganie najłatwiej usunąć komunikat przy użyciu procesu dwuetapowego.
Najpierw pobierz następny komunikat w kolejce, wywołując ReceiveMessage
metody lub ReceiveMessages
. Aby zakończyć usuwanie komunikatu z kolejki, przekaż wartości uzyskane z komunikatu do DeleteMessage
metody .
Ten proces przedstawiono w poniższych przykładach.
# 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)}
Usuwanie kolejki
Aby usunąć kolejkę i wszystkie zawarte w niej komunikaty, wywołaj QueueClient
metodę klasy Delete
. W poniższym przykładzie pokazano, jak usunąć określoną kolejkę używaną w tym ćwiczeniu.
# Delete the queue
Remove-AzStorageQueue -Name $queueName -Context $ctx
Czyszczenie zasobów
Usuń grupę zasobów, aby usunąć zasoby i zasoby utworzone w tym ćwiczeniu. W takim przypadku konto magazynu i sama grupa zasobów również zostaną usunięte.
Remove-AzResourceGroup -Name $resourceGroup
Następne kroki
W tym artykule z instrukcjami przedstawiono podstawowe funkcje zarządzania usługą Queue Storage za pomocą programu PowerShell, w tym instrukcje:
- Utwórz kolejkę
- Pobieranie kolejki
- Dodawanie komunikatów
- Odczytywanie komunikatów
- Usuwanie komunikatów
- Usuwanie kolejki
Polecenia cmdlet magazynu programu 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.