PowerShell'den Azure Kuyruk Depolama'yı kullanma

Azure Kuyruk Depolama, HTTP veya HTTPS aracılığıyla dünyanın her yerinden erişilebilen çok sayıda iletiyi depolamaya yönelik bir hizmettir. Ayrıntılı bilgi için bkz. Azure Kuyruk Depolamaya Giriş. Bu nasıl yapılır makalesi yaygın Kuyruk Depolama işlemlerini kapsar. Aşağıdakileri nasıl yapacağınızı öğrenirsiniz:

  • Bir kuyruk oluşturma
  • Kuyruk alma
  • İleti ekleme
  • İletiyi okuma
  • İleti silme
  • Bir kuyruk silme

Bu nasıl yapılır kılavuzu için v0.7 veya sonraki Azure PowerShellAz modülü gerekir. Şu anda yüklü olan sürümü bulmak için komutunu çalıştırın Get-Module -ListAvailable Az . Yükseltmeniz gerekirse, bkz. Azure PowerShell modülünü yükleme.

Kuyruklar için veri düzlemi için PowerShell cmdlet'leri yoktur. İleti ekleme, ileti okuma ve iletiyi silme gibi veri düzlemi işlemleri gerçekleştirmek için PowerShell'de kullanıma sunulduğu için .NET depolama istemci kitaplığını kullanmanız gerekir. bir ileti nesnesi oluşturur ve bu ileti üzerinde işlem gerçekleştirmek için gibi AddMessage komutları kullanabilirsiniz. Bu makalede bunu nasıl yapacağınız gösterilmektedir.

Not

Azure ile etkileşime geçmek için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Azure'da oturum açma

Connect-AzAccount komutuyla Azure aboneliğinizde oturum açın ve ekrandaki yönergeleri izleyin.

Connect-AzAccount

Konum listesini alma

Kullanmak istediğiniz konumdan emin değilseniz, kullanılabilir konumları listeleyebilirsiniz. Liste görüntülendikten sonra, kullanmak istediğiniz öğeyi bulun. Bu alıştırmada kullanılacaktır eastus. Bunu gelecekte kullanmak üzere değişkende location depolayın.

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

Kaynak grubu oluşturma

New-AzResourceGroup komutuyla bir kaynak grubu oluşturun.

Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır. Kaynak grubu adını gelecekte kullanmak üzere bir değişkende depolayın. Bu örnekte, eastusbölgesinde howtoqueuesrg adlı bir kaynak grubu oluşturulur.

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

Depolama hesabı oluştur

New-AzStorageAccount kullanarak yerel olarak yedekli depolama (LRS) ile standart bir genel amaçlı depolama hesabı oluşturun. Kullanılacak depolama hesabını tanımlayan depolama hesabı bağlamını alın. Depolama hesabında bir işlem gerçekleştirirken, kimlik bilgilerini tekrar tekrar sağlamak yerine bağlama başvurursunuz.

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

$ctx = $storageAccount.Context

Bir kuyruk oluşturma

Aşağıdaki örnek önce depolama hesabı adını ve erişim anahtarını içeren depolama hesabı bağlamını kullanarak Azure Depolama ile bağlantı kurar. Ardından, adlı howtoqueuebir kuyruk oluşturmak için New-AzStorageQueue cmdlet'ini çağırır.

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

Azure Kuyruk Depolama adlandırma kuralları hakkında bilgi için bkz. Kuyrukları ve meta verileri adlandırma.

Kuyruk alma

Belirli bir kuyruğu veya depolama hesabındaki tüm kuyrukların listesini sorgulayabilir ve alabilirsiniz. Aşağıdaki örnekler, depolama hesabındaki tüm kuyrukların ve belirli bir kuyruğun nasıl alınduğunu gösterir; her iki komut da Get-AzStorageQueue cmdlet'ini kullanır.

# 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

Kuyruğa ileti ekleme

Kuyruktaki gerçek iletileri etkileyen işlemler, PowerShell'de kullanıma sunulan .NET depolama istemci kitaplığını kullanır. Kuyruğa ileti eklemek için ileti nesnesinin Microsoft.Azure.Storage.Queue.CloudQueueMessage yeni bir örneğini oluşturun. Ardından yöntemini çağırın AddMessage . bir CloudQueueMessage dizeden (UTF-8 biçiminde) veya bayt dizisinden oluşturulabilir.

Aşağıdaki örnekte kuyruğunuza nasıl ileti ekleneceği gösterilmektedir.

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

Azure Depolama Gezgini kullanıyorsanız Azure hesabınıza bağlanabilir, depolama hesabındaki kuyrukları görüntüleyebilir ve kuyruktaki iletileri görüntülemek için kuyruğa gidebilirsiniz.

Kuyruktan bir iletiyi okuyun ve silin

İletiler en iyi deneme ilk çıkar sırasına göre okunur. Bu garanti değildir. kuyruktan iletiyi okuduğunuzda, kuyruğa bakan diğer tüm işlemler için görünmez hale gelir. Bu, kodunuz donanım veya yazılım hatası nedeniyle iletiyi işleyemezse kodunuzun başka bir örneğinin aynı iletiyi alıp yeniden denemesini sağlar.

Bu görünmezlik zaman aşımı , iletinin işlenmek üzere yeniden kullanılabilir duruma gelmeden önce ne kadar süreyle görünmez kalacağını tanımlar. Varsayılan değer 30 saniyedir.

Kodunuz kuyruktaki bir iletiyi iki adımda okur. yöntemini çağırdığınızda Microsoft.Azure.Storage.Queue.CloudQueue.GetMessage kuyruktaki bir sonraki iletiyi alırsınız. tarafından GetMessage döndürülen bir ileti, bu kuyruktan gelen iletileri okuyan diğer kodlar için görünmez hale gelir. kuyruktan iletiyi kaldırmayı tamamlamak için yöntemini çağırırsınız Microsoft.Azure.Storage.Queue.CloudQueue.DeleteMessage .

Aşağıdaki örnekte, üç kuyruk iletisini okuyup 10 saniye (görünmezlik zaman aşımı) bekleyin. Ardından üç iletiyi yeniden okuyup iletileri okuduktan sonra öğesini çağırarak DeleteMessagesilebilirsiniz. İletiler silindikten sonra kuyruğu okumaya çalışırsanız, $queueMessage olarak $nulldöndürülür.

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

Bir kuyruk silme

Bir kuyruğu ve içindeki tüm iletileri silmek için cmdlet'ini çağırın Remove-AzStorageQueue . Aşağıdaki örnekte, cmdlet'ini kullanarak bu alıştırmada kullanılan belirli kuyruğun nasıl silineceği gösterilmektedir Remove-AzStorageQueue .

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

Kaynakları temizleme

Bu alıştırmada oluşturduğunuz tüm varlıkları kaldırmak için kaynak grubunu kaldırın. Bu, ayrıca grubun içerdiği tüm kaynakları da siler. Bu durumda, oluşturulan depolama hesabını ve kaynak grubunun kendisini kaldırır.

Remove-AzResourceGroup -Name $resourceGroup

Sonraki adımlar

Bu nasıl yapılır makalesinde, Aşağıdakiler de dahil olmak üzere PowerShell ile temel Kuyruk Depolama yönetimi hakkında bilgi edindiniz:

  • Bir kuyruk oluşturma
  • Kuyruk alma
  • İleti ekleme
  • Sonraki iletiyi okuma
  • İleti silme
  • Bir kuyruk silme

depolama cmdlet'lerini Microsoft Azure PowerShell

Microsoft Azure Depolama Gezgini

  • Microsoft Azure Depolama Gezgini, Microsoft’un Windows, macOS ve Linux üzerinde Azure Depolama verileriyle görsel olarak çalışmanızı sağlayan ücretsiz ve tek başına uygulamasıdır.