Aracılığıyla paylaş


PowerShell'den Azure Kuyruk Depolama 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 Depolama giriş. Bu nasıl yapılır makalesi yaygın Kuyruk Depolama işlemlerini kapsar. Şunları yapmayı öğreneceksiniz:

  • Kuyruk oluştur
  • Kuyruk alma
  • İleti ekleme
  • İletileri alma
  • İletileri silme
  • Bir kuyruk silme

Bu nasıl yapılır kılavuzu için Azure PowerShell (Az) modülü v12.0.0 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, iletiyi 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şturursunuz ve bu ileti üzerinde işlem gerçekleştirmek için gibi AddMessage komutları kullanabilirsiniz. Bu makalede bunu nasıl yapabileceğiniz gösterilir.

Not

Azure ile etkileşim kurmak 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. Gerekirse ve parametrelerini ekleyerek ve ilgili değerleri ekleyerek TenantId Subscription bir abonelik belirtebilirsiniz.

Connect-AzAccount

Konum listesini alma

Hangi konumu kullanmak istediğinizi bilmiyorsanız, sağlanan örnekte gösterildiği gibi cmdlet'ini Get-AzLocation kullanarak kullanılabilir konumları listeleyebilirsiniz. Liste görüntülendikten sonra bir konum seçin ve gelecekte kullanmak üzere değişkende location depolayın. Bu alıştırmadaki örneklerde konum kullanılır eastus .

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

Kaynak grubu oluşturma

Azure kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır. Kaynak grubunuz için bir ad seçin ve gelecekte kullanmak üzere değişkende resourceGroup depolayın. Bu örnekte adı howtoqueuesrgkullanılır.

New-AzResourceGroup cmdlet'ini çağırarak ve parametrenin adını ve konumunu ResourceGroupName gösterildiği gibi sağlayarak bir kaynak grubu oluşturun.

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

Depolama hesabı oluşturma

Azure depolama hesabı, tüm veri nesnelerinizi blob, dosya, kuyruk ve tablo olarak içeren benzersiz olarak adlandırılmış bir kaynaktır.

Depolama hesabınız için bir ad seçin ve gelecekte kullanmak üzere değişkende storageAccountName depolayın. Bu örnekte adı howtoqueuestoragekullanılır.

Ardından New-Az Depolama Account cmdlet'ini kullanarak yerel olarak yedekli depolama (LRS) ile standart bir genel amaçlı depolama hesabı oluşturun. Son olarak, depolama hesabını tanımlayan depolama hesabı bağlamını ayarlayarak değişkene ctx kaydedin. Değişkeniyle bağlama başvurmak, bir depolama hesabında kimlik bilgilerini tekrar tekrar sağlamadan işlem gerçekleştirmenizi sağlar.

$storageAccountName = "howtoqueuestorage"

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

$ctx = $storageAccount.Context

Kuyruk oluştur

İlk olarak, depolama hesabınız için bir ad seçin ve bunu değişkende depolayın queueName . Bu örnekte adı howtoqueuestoragekullanılır. Ardından New-Az Depolama Queue cmdlet'ini kullanarak ve değişkenlerini ve parametrelerine Context Name gösterildiği gibi geçirerek ctx queueName bir kuyruk oluşturun.

$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 almak için Get-Az Depolama Queue cmdlet'ini kullanabilirsiniz. Aşağıdaki örnekler, cmdlet'ini kullanarak Get-AzStorageQueue tüm kuyrukların nasıl alınacağını ve parametre kullanarak Name bir kuyruğun nasıl belirtileceğini gösterir.

# 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

Kuyruğa ileti ekleme

Kuyruktaki iletileri etkileyen işlemler, PowerShell'de kullanıma sunulan .NET depolama istemci kitaplığını kullanır. Kuyruğa ileti eklemek için iletinizi sınıfın QueueClient SendMessage yöntemine dize olarak geçirin.

İleti dizeniz UTF-8 biçiminde olmalıdır.

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

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

Kuyruktan ileti alma

Her zaman garanti edilmese de , iletiler bir kuyruktan en iyi deneme, ilk önce çıkış sırasına göre alınır.

Kullanım örneğine bağlı olarak, kuyruktan bir veya daha fazla ileti alabilirsiniz. Ayrıca iletilerin görünürlüğünü değiştirerek diğer işlemlerin aynı iletiye erişmesine izin verebilir veya bunları engelleyebilirsiniz.

Kuyruktan ileti almanın iki yolu vardır:

  • Alma: kullanarak Receive bir iletiyi almak, iletiyi sıralar ve özelliğini artırır DequeueCount . Bir ileti silinmediği sürece, yeniden işlenmek üzere kuyruğa yeniden eklenir.
  • Göz atma: kullanarak Peek bir iletiyi almak, kuyruktan iletileri "önizlemenize" olanak tanır. Peek iletinin sıralamasını kaldırmaz veya özelliğini artırmaz DequeueCount .

İleti alma

gibi ReceiveMessagebir yöntem kullanarak bir kuyruktan ileti okuduğunuzda, ileti geçici olarak sıralanır ve diğer işlemler için geçici olarak görünmez hale gelir. Bu görünürlük zaman aşımı , iletinin ne kadar süreyle görünmez kaldığını tanımlar. Varsayılan görünürlük zaman aşımı 30 saniyedir.

İleti görünürlük zaman aşımı geçmeden önce işlenmezse, DequeueCount özelliği artırılır ve kuyruğun sonuna yeniden eklenir. Aynı iletiyi yeniden denemek, başka bir işlemin aynı iletiyi alıp yeniden denemesini sağlar.

Aşağıdaki örnek, invisibleTimeout değişkenini 10 saniye olarak ayarlar ve ardından kuyruktan iki iletiyi okur.

# 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

Yöntemini kullanarak ReceiveMessages ve döndürülecek en fazla ileti sayısını belirtmek için ve tamsayı değerini geçirerek kuyruktan aynı anda birden çok ileti alabilirsiniz.

# 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

İletilere göz atma

Paylaşılan kuyrukları veya iletilerin görünürlüğünü değiştirmeden önizlemesini içerebilecek kullanım örnekleri için ve PeekMessages yöntemlerini kullanabilirsinizPeekMessage. Önceki ReceiveMessages örnekte olduğu gibi, en fazla ileti sayısını belirtmek için bir tamsayı değeri geçirilerek aynı anda birden çok iletiye göz atılabilir.

Aşağıdaki örneklerde kuyruktan ileti almak için hem PeekMessage ve PeekMessages yöntemleri kullanılır.

# 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

Kuyruktan iletileri silme

Yanlışlıkla silinmesini önlemek için, bir iletiyi kalıcı olarak silmeden önce hem MessageId ve PopReceipt özellikleri sağlanmalıdır. Bu gereksinim nedeniyle, iki aşamalı bir işlem kullanarak bir iletiyi silmek en kolay seçenektir.

İlk olarak, veya ReceiveMessages yöntemlerini çağırarak ReceiveMessage kuyruktaki sonraki iletiyi getirin. kuyruktan iletiyi kaldırmayı tamamlamak için, iletiden alınan değerleri yöntemine DeleteMessage geçirin.

Bu işlem aşağıdaki örneklerde gösterilmiştir.

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

Bir kuyruk silme

Bir kuyruğu ve içindeki tüm iletileri silmek için sınıfın QueueClient yöntemini çağırın Delete . Aşağıdaki örnekte, bu alıştırmada kullanılan belirli bir kuyruğun nasıl silineceği gösterilmektedir.

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

Kaynakları temizleme

Bu alıştırmada oluşturulan varlıkları ve kaynakları silmek için kaynak grubunu kaldırın. Bu durumda, depolama hesabı ve kaynak grubunun kendisi de silinir.

Remove-AzResourceGroup -Name $resourceGroup

Sonraki adımlar

Bu nasıl yapılır makalesinde, PowerShell ile temel Kuyruk Depolama yönetimi hakkında şunların nasıl yapıldığını öğrendiniz:

  • Kuyruk oluştur
  • Kuyruk alma
  • İleti ekleme
  • İletileri okuma
  • İletileri silme
  • Bir kuyruk silme

Microsoft Azure PowerShell depolama cmdlet'leri

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.