Bagikan melalui


Cara menggunakan Azure Queue Storage dari PowerShell

Azure Queue Storage adalah layanan untuk menyimpan sejumlah besar pesan yang dapat diakses dari mana saja di dunia melalui HTTP atau HTTPS. Untuk informasi selengkapnya, lihat Pengenalan Azure Queue Storage. Artikel panduan ini mencakup operasi Azure Queue Storage yang umum. Anda akan mempelajari cara untuk:

  • Membuat antrean
  • Mengambil antrean
  • Menambahkan pesan
  • Mengambil pesan
  • Menghapus pesan
  • Menghapus antrean

Panduan cara penggunaan ini memerlukan modul Azure PowerShell (Az) v12.0.0. Jalankan Get-Module -ListAvailable Az untuk menemukan versi yang terinstal saat ini. Jika Anda perlu peningkatan, lihat Instal modul Azure PowerShell.

Tidak ada cmdlet PowerShell untuk data plane untuk antrean. Untuk melakukan operasi data plane seperti menambahkan pesan, membaca pesan, dan menghapus pesan, Anda harus menggunakan pustaka klien penyimpanan .NET seperti yang diekspos di PowerShell. Anda membuat objek pesan lalu Anda bisa menggunakan perintah seperti AddMessage untuk melakukan operasi pada pesan tersebut. Artikel ini memperlihatkan kepada Anda cara melakukannya.

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Untuk memulai, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Masuk ke Azure

Masuk ke langganan Azure Anda dengan perintah Connect-AzAccount dan ikuti petunjuk pada layar. Jika diperlukan, Anda dapat menentukan langganan dengan menambahkan TenantId parameter dan Subscription , dan menyertakan nilai masing-masing.

Connect-AzAccount

Mengambil daftar lokasi

Jika Anda tidak tahu lokasi mana yang ingin Anda gunakan, Anda dapat mencantumkan lokasi yang tersedia menggunakan Get-AzLocation cmdlet seperti yang ditunjukkan dalam contoh yang disediakan. Setelah daftar ditampilkan, pilih lokasi dan simpan dalam variabel untuk digunakan di location masa mendatang. Contoh dalam latihan ini menggunakan eastus lokasi.

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

Buat grup sumber daya

Grup sumber daya Azure adalah kontainer logis tempat sumber daya Azure disebarkan dan dikelola. Pilih nama untuk grup sumber daya Anda dan simpan dalam variabel untuk digunakan di resourceGroup masa mendatang. Contoh ini menggunakan nama howtoqueuesrg.

Buat grup sumber daya dengan memanggil cmdlet New-AzResourceGroup dan berikan nama dan lokasi ke parameter seperti yang ditunjukkan ResourceGroupName .

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

Buat akun penyimpanan

Akun penyimpanan Azure adalah sumber daya bernama unik yang berisi semua objek data Anda sebagai blob, file, antrean, dan tabel.

Pilih nama untuk akun penyimpanan Anda dan simpan dalam variabel untuk digunakan di storageAccountName masa mendatang. Contoh ini menggunakan nama howtoqueuestorage.

Selanjutnya, buat akun penyimpanan tujuan umum standar dengan penyimpanan redundan lokal (LRS) menggunakan cmdlet New-AzStorageAccount . Terakhir, atur konteks akun penyimpanan yang menentukan akun penyimpanan, simpan ke ctx variabel. Mereferensikan konteks dengan variabel memungkinkan Anda melakukan operasi terhadap akun penyimpanan tanpa berulang kali memberikan kredensial.

$storageAccountName = "howtoqueuestorage"

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

$ctx = $storageAccount.Context

Membuat antrean

Pertama, pilih nama untuk akun penyimpanan Anda dan simpan dalam queueName variabel . Contoh ini menggunakan nama howtoqueuestorage. Selanjutnya, buat antrean menggunakan cmdlet New-AzStorageQueue dan teruskan queueName variabel dan ctx ke parameter dan Context seperti yang ditunjukkanName.

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

Untuk informasi tentang konvensi penamaan untuk Azure Queue Storage, lihat Penamaan antrean dan metadata.

Mengambil antrean

Anda dapat menggunakan cmdlet Get-AzStorageQueue untuk mengambil antrean tertentu, atau daftar semua antrean dalam akun penyimpanan. Contoh berikut menunjukkan cara mengambil semua antrean dengan menggunakan Get-AzStorageQueue cmdlet, dan cara menentukan antrean dengan menggunakan Name parameter.

# 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

Tambahkan pesan ke antrean

Operasi yang memengaruhi pesan dalam antrean menggunakan pustaka klien penyimpanan .NET seperti yang diekspos di PowerShell. Untuk menambahkan pesan ke antrean, teruskan pesan Anda sebagai string ke QueueClient metode kelas SendMessage .

String pesan Anda harus dalam format UTF-8.

Contoh berikut menunjukkan cara menambahkan pesan ke antrean Anda.

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

Jika Anda menggunakan Azure Storage Explorer, Anda bisa menyambungkan ke akun Azure Anda dan melihat antrean di akun penyimpanan, dan menelusuri paling detail ke dalam antrean untuk melihat pesan pada antrean.

Mengambil pesan dari antrean

Meskipun tidak selalu dijamin, pesan diambil dari antrean dalam urutan best-try, first-in-first-out .

Bergantung pada kasus penggunaan, Anda dapat mengambil satu atau beberapa pesan dari antrean. Anda juga dapat mengubah visibilitas pesan, baik mengizinkan atau mencegah proses lain mengakses pesan yang sama.

Ada dua cara untuk mengambil pesan dari antrean:

  • Terima: Mengambil pesan menggunakan Receive menghapus antrean pesan dan menaikkan propertinya DequeueCount . Kecuali pesan dihapus, pesan akan dimasukkan kembali dalam antrean untuk diproses lagi.
  • Intip: Mengambil pesan menggunakan Peek memungkinkan Anda untuk "pratinjau" pesan dari antrean. Peek tidak menghapus antrean pesan atau menaikkan propertinya DequeueCount .

Terima pesan

Saat Anda membaca pesan dari antrean menggunakan metode seperti ReceiveMessage, pesan untuk sementara dihentikan dan menjadi tidak terlihat sementara oleh proses lain. Batas waktu visibilitas ini menentukan berapa lama pesan tetap tidak terlihat. Batas waktu visibilitas default adalah 30 detik.

Jika pesan tidak diproses sebelum batas waktu visibilitas berlalu, propertinya DequeueCount akan dinaikkan dan diinserksi ulang di akhir antrean. Memasukkan ulang pesan yang sama memastikan bahwa proses lain dapat mengambil pesan yang sama dan mencoba lagi.

Contoh berikut mengatur variabel invisibleTimeout menjadi 10 detik, lalu membaca dua pesan dari antrean.

# 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

Anda dapat mengambil beberapa pesan dari antrean secara bersamaan dengan menggunakan ReceiveMessages metode dan meneruskan dan nilai bilangan bulat untuk menentukan jumlah maksimum pesan yang akan dikembalikan.

# 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

Intip pesan

Untuk kasus penggunaan yang mungkin melibatkan antrean bersama atau mempratinjau pesan tanpa mengubah visibilitasnya, Anda dapat menggunakan PeekMessage metode dan PeekMessages . Seperti contoh sebelumnya ReceiveMessages , beberapa pesan dapat diintip secara bersamaan dengan meneruskan nilai bilangan bulat untuk menentukan jumlah maksimum pesan.

Contoh berikut menggunakan PeekMessage metode dan PeekMessages untuk mengambil pesan dari antrean.

# 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

Hapus pesan dari antrean

Untuk mencegah penghapusan yang MessageId tidak disengaja, properti dan PopReceipt harus disediakan sebelum menghapus pesan secara permanen. Karena persyaratan ini, paling mudah untuk menghapus pesan menggunakan proses dua langkah.

Pertama, ambil pesan berikutnya dalam antrean dengan memanggil ReceiveMessage metode atau ReceiveMessages . Untuk menyelesaikan penghapusan pesan dari antrean, teruskan nilai yang diperoleh dari pesan ke DeleteMessage metode .

Proses ini diilustrasikan dalam contoh berikut.

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

Menghapus antrean

Untuk menghapus antrean dan semua pesan yang terkandung di dalamnya, panggil QueueClient metode kelas Delete . Contoh berikut menunjukkan cara menghapus antrean tertentu yang digunakan dalam latihan ini.

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

Membersihkan sumber daya

Hapus grup sumber daya untuk menghapus aset dan sumber daya yang dibuat dalam latihan ini. Dalam hal ini, akun penyimpanan dan grup sumber daya itu sendiri juga dihapus.

Remove-AzResourceGroup -Name $resourceGroup

Langkah berikutnya

Dalam artikel panduan ini, Anda mempelajari tentang manajemen Azure Queue Storage dasar dengan PowerShell, termasuk cara:

  • Membuat antrean
  • Mengambil antrean
  • Menambahkan pesan
  • Membaca pesan
  • Menghapus pesan
  • Menghapus antrean

Cmdlet penyimpanan Microsoft Azure PowerShell

Penjelajah Penyimpanan Microsoft Azure

  • Explorer Microsoft Azure Storage adalah aplikasi mandiri gratis dari Microsoft yang memungkinkan Anda bekerja secara visual dengan data Azure Storage di Windows, macOS, dan Linux.