Udostępnij za pośrednictwem


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 jego DequeueCount 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 jego DequeueCount 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.