Ruby'den Kuyruk Depolama'yı kullanma

İpucu

Microsoft Azure Depolama Gezgini’ni deneyin

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.

Genel Bakış

Bu kılavuz, Microsoft Azure Kuyruk Depolama hizmetini kullanarak yaygın senaryoları nasıl gerçekleştirebileceğinizi gösterir. Örnekler Ruby Azure API kullanılarak yazılır. Kapsanan senaryolar kuyruk iletilerini ekleme, gözatma, alma ve silmenin yanı sıra kuyruk oluşturma ve silmeyi içerir.

Kuyruk depolama nedir?

Azure Kuyruk depolama, HTTP veya HTTPS kullanan kimlik doğrulaması yapılmış çağrılar aracılığıyla dünyanın her yerinden erişilebilen çok sayıda iletinin depolanması için bir hizmettir. Tek bir kuyruk iletisinin boyutu 64 KB’ye kadar olabilir ve bir kuyrukta, depolama hesabının toplam kapasite sınırına kadar milyonlarca ileti bulunabilir. Kuyruk depolama genellikle zaman uyumsuz olarak işlenmek üzere bir iş kapsamı oluşturmak için kullanılır.

Kuyruk hizmeti kavramları

Azure Kuyruk hizmeti aşağıdaki bileşenleri içerir:

Azure Kuyruk hizmeti bileşenleri

  • Depolama Hesabı: Azure Depolama'ya tüm erişim bir depolama hesabı üzerinden gerçekleştirilir. Depolama hesapları hakkında daha fazla bilgi için bkz. Depolama hesabına genel bakış.

  • Kuyruk: Kuyrukta bir dizi ileti vardır. Tüm iletiler bir kuyrukta olmalıdır. Kuyruk adının tamamen küçük harfli olması gerektiğini unutmayın. Kuyrukların adlandırılması hakkında daha fazla bilgi için bkz. Kuyrukları ve Meta Verileri Adlandırma.

  • İleti: İleti, biçimi ne olursa olsun en çok 64 KB büyüklüktedir. Bir iletinin kuyrukta kalabileceği en uzun süre 7 gündür. Sürüm 2017-07-29 veya üzeri için yaşam süresi üst sınırı herhangi bir pozitif sayı veya iletinin süresinin dolmadığını belirten -1 olabilir. Bu parametre atlanırsa, varsayılan yaşam süresi yedi gündür.

  • URL biçimi: Kuyruklar şu URL biçimi kullanılarak adreslenebilir: http://<storage account>.queue.core.windows.net/<queue>

    Aşağıdaki URL diyagramdaki bir kuyruğun adresini belirtir:

    http://myaccount.queue.core.windows.net/incoming-orders

Azure depolama hesabı oluşturma

İlk Azure depolama hesabınızı oluşturmanın en kolay yolu Azure Portalı’nı kullanmaktır. Daha fazla bilgi için bkz. Depolama hesabı oluşturma.

Azure PowerShell, Azure CLI veya .NET için Azure Depolama Kaynak Sağlayıcısı’nı da kullanarak Azure depolama hesabı oluşturabilirsiniz.

Şu anda Azure'da depolama hesabı oluşturmamayı tercih ediyorsanız, kodunuzu yerel bir ortamda çalıştırmak ve test etmek için Azurite depolama öykünücüsü de kullanabilirsiniz. Daha fazla bilgi için bkz. Yerel Azure Depolama geliştirmesi için Azurite öykünücüsü kullanma.

Ruby uygulaması oluşturma

Ruby uygulaması oluşturma. Yönergeler için bkz. Linux üzerinde App Service'de Ruby uygulaması oluşturma.

Uygulamanızı depolama alanına erişecek şekilde yapılandırma

Azure Depolama'yı kullanmak için depolama REST hizmetleriyle iletişim kuran bir dizi kolaylık kitaplığı içeren Ruby Azure paketini indirip kullanmanız gerekir.

Paketi edinmek için RubyGems kullanma

  1. PowerShell (Windows), Terminal (Mac) veya Bash (Unix) gibi bir komut satırı arabirimi kullanın.
  2. Gem'i ve bağımlılıkları yüklemek için komut penceresine yazın gem install azure .

Paketi içeri aktarma

Sık kullandığınız metin düzenleyiciyi kullanın, depolamayı kullanmayı planladığınız Ruby dosyasının en üstüne aşağıdakileri ekleyin:

require "azure"

Azure Depolama bağlantısı kurma

Azure modülü, ortam değişkenlerini AZURE_STORAGE_ACCOUNT ve AZURE_STORAGE_ACCESS_KEY Azure Depolama hesabınıza bağlanmak için gereken bilgileri okur. Bu ortam değişkenleri ayarlanmadıysa, aşağıdaki kodla kullanmadan Azure::QueueService önce hesap bilgilerini belirtmeniz gerekir:

Azure.config.storage_account_name = "<your azure storage account>"
Azure.config.storage_access_key = "<your Azure storage access key>"

Bu değerleri Azure portalında bir klasik veya Kaynak Yöneticisi depolama hesabından edinmek için:

  1. Azure portal oturum açın.
  2. Kullanmak istediğiniz depolama hesabına gidin.
  3. Sağdaki Ayarlar dikey penceresinde Erişim Anahtarları'na tıklayın.
  4. Görüntülenen Erişim Anahtarları dikey penceresinde erişim tuşu 1 ve erişim tuşu 2'yi görürsünüz. Bunlardan birini kullanabilirsiniz.
  5. Anahtarı panoya kopyalamak için Kopyala simgesine tıklayın.

Nasıl yapılır: Kuyruk oluşturma

Aşağıdaki kod, kuyruklarla çalışmanızı sağlayan bir Azure::QueueService nesnesi oluşturur.

azure_queue_service = Azure::QueueService.new

create_queue() Belirtilen ada sahip bir kuyruk oluşturmak için yöntemini kullanın.

begin
  azure_queue_service.create_queue("test-queue")
rescue
  puts $!
end

Nasıl yapılır: Kuyruğa ileti ekleme

Kuyruğa ileti eklemek için yöntemini kullanarak create_message() yeni bir ileti oluşturun ve kuyruğa ekleyin.

azure_queue_service.create_message("test-queue", "test message")

Nasıl yapılır: Sonraki iletiye göz atma

yöntemini çağırarak kuyruktan kaldırmadan kuyruğun önündeki iletiye peek_messages() göz atabilirsiniz. Varsayılan olarak, peek_messages() tek bir iletiye göz atarak. Kaç iletiye göz atmak istediğinizi de belirtebilirsiniz.

result = azure_queue_service.peek_messages("test-queue",
  {:number_of_messages => 10})

Nasıl yapılır: Sonraki iletiyi sıralama

kuyruktaki bir iletiyi iki adımda kaldırabilirsiniz.

  1. çağrısı list_messages()yaptığınızda, bir sonraki iletiyi varsayılan olarak bir kuyrukta alırsınız. Kaç ileti almak istediğinizi de belirtebilirsiniz. 'den list_messages() döndürülen iletiler, bu kuyruktan gelen iletileri okuyan diğer kodlar için görünmez hale gelir. Görünürlük zaman aşımını parametre olarak saniyeler içinde geçirirsiniz.
  2. İletiyi kuyruktan kaldırmayı tamamlamak için öğesini de çağırmanız delete_message()gerekir.

bir iletiyi kaldırmanın bu iki adımlı işlemi, kodunuz donanım veya yazılım hatası nedeniyle bir iletiyi işleyemediğinde kodunuzun başka bir örneğinin aynı iletiyi alıp yeniden denemesini sağlar. İleti işlendikten hemen sonra kodunuz çağrılar delete_message() .

messages = azure_queue_service.list_messages("test-queue", 30)
azure_queue_service.delete_message("test-queue",
  messages[0].id, messages[0].pop_receipt)

Nasıl yapılır: Kuyruğa alınan iletinin içeriğini değiştirme

Kuyrukta yer alan bir iletinin içeriğini değiştirebilirsiniz. Aşağıdaki kod, update_message() bir iletiyi güncelleştirmek için yöntemini kullanır. yöntemi, kuyruk iletisinin pop alındı bilgisini içeren bir tanımlama grubu ve iletinin kuyrukta ne zaman görünür olacağını gösteren bir UTC DateTime değeri döndürür.

message = azure_queue_service.list_messages("test-queue", 30)
pop_receipt, time_next_visible = azure_queue_service.update_message(
  "test-queue", message.id, message.pop_receipt, "updated test message",
  30)

Nasıl yapılır: İletileri sıralamak için ek seçenekler

İletilerin bir kuyruktan alınma şeklini iki yöntemle özelleştirebilirsiniz.

  1. Toplu ileti alabilirsiniz.
  2. Kodunuzun her iletiyi tam olarak işlemesine daha fazla veya daha az zaman tanıyarak daha uzun veya daha kısa bir görünmezlik zaman aşımı ayarlayabilirsiniz.

Aşağıdaki kod örneği, bir çağrıda list_messages() 15 ileti almak için yöntemini kullanır. Ardından her iletiyi yazdırır ve siler. Ayrıca her ileti için görünmezlik zaman aşımı beş dakika olarak ayarlanır.

azure_queue_service.list_messages("test-queue", 300
  {:number_of_messages => 15}).each do |m|
  puts m.message_text
  azure_queue_service.delete_message("test-queue", m.id, m.pop_receipt)
end

Nasıl yapılır: Kuyruk uzunluğunu alma

Kuyruktaki ileti sayısıyla ilgili bir tahmin alabilirsiniz. yöntemi yaklaşık get_queue_metadata() ileti sayısını ve diğer kuyruk meta verilerini döndürür.

message_count, metadata = azure_queue_service.get_queue_metadata(
  "test-queue")

Nasıl yapılır: Kuyruk silme

Bir kuyruğu ve içindeki tüm iletileri silmek için kuyruk nesnesinde yöntemini çağırın delete_queue() .

azure_queue_service.delete_queue("test-queue")

Sonraki adımlar

Kuyruk Depolama'nın temellerini öğrendiğinize göre, daha karmaşık depolama görevleri hakkında bilgi edinmek için bu bağlantıları izleyin.

Bu makalede ele alınan Azure Kuyruk Depolama ile Service Bus kuyruklarını kullanma konusunda ele alınan Azure Service Bus kuyrukları arasında bir karşılaştırma için bkz. Azure Kuyruk Depolama ve Service Bus kuyrukları - karşılaştırmalı ve karşıt