Cara menggunakan Queue Storage dari Ruby

Tip

Coba Explorer Microsoft Azure Storage

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

Gambaran Umum

Panduan ini memperlihatkan kepada Anda cara melakukan skenario umum menggunakan layanan Microsoft Azure Queue Storage. Sampel ditulis menggunakan Ruby Azure API. Skenario yang disertakan termasuk menyisipkan, mengintip, mendapatkan, dan menghapus pesan antrean, serta membuat dan menghapus antrean.

Apa itu penyimpanan Queue?

Penyimpanan Azure Queue adalah layanan untuk menyimpan banyak pesan yang dapat diakses dari mana saja di seluruh dunia melalui panggilan terautentikasi menggunakan HTTP atau HTTPS. Satu pesan antrean dapat berukuran hingga 64 KB, dan antrean dapat berisi jutaan pesan, hingga batas total kapasitas akun penyimpanan. Penyimpanan Queue umumnya digunakan untuk membuat backlog pekerjaan yang akan diproses secara asinkron.

Konsep layanan Queue

Layanan Azure Queue berisi komponen berikut:

Komponen layanan Azure Queue

  • Akun Penyimpanan: Semua akses ke Azure Storage dilakukan melalui akun penyimpanan. Untuk mendapatkan informasi selengkapnya tentang akun penyimpanan, lihat Gambaran umum penyimpanan.

  • Queue: Antrean berisi sekumpulan pesan. Semua pesan harus dalam antrean. Perhatikan bahwa nama antrean harus ditulis dengan huruf kecil semua. Untuk mendapatkan informasi tentang penamaan antrean, lihat Penamaan Antrean dan Metadata.

  • Pesan: Pesan, dalam format apa pun, dapat mencapai ukuran 64 KB. Waktu maksimum pesan dapat tetap berada dalam antrean adalah 7 hari. Untuk versi 29-07-2017 atau yang lebih baru, waktu untuk aktif maksimum dapat berupa angka positif apa pun, atau -1 yang menunjukkan bahwa pesan belum kedaluwarsa. Jika parameter ini dihilangkan, waktu untuk aktif default-nya adalah tujuh hari.

  • Format URL: Antrean dapat diatasi menggunakan format URL berikut: http://<storage account>.queue.core.windows.net/<queue>

    URL berikut mengatasi antrean dalam diagram:

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

Buat akun penyimpanan Azure

Cara termudah untuk membuat akun penyimpanan Azure pertama Anda adalah dengan menggunakan portal Microsoft Azure. Untuk mempelajari selengkapnya, lihat Buat akun penyimpanan.

Anda juga dapat membuat akun penyimpanan Azure dengan menggunakan Microsoft Azure PowerShell, Azure CLI,atau Penyedia Sumber Daya Microsoft Azure Storage untuk .NET.

Jika Anda lebih suka tidak membuat akun penyimpanan di Azure saat ini, Anda juga dapat menggunakan emulator penyimpanan Azurite untuk menjalankan dan menguji kode Anda di lingkungan lokal. Untuk informasi selengkapnya, lihat Gunakan emulator Azurite untuk pengembangan Microsoft Azure Storage lokal.

Buat aplikasi Ruby

Buat aplikasi Ruby. Untuk mengetahui petunjuknya, lihat Buat aplikasi Ruby di App Service di Linux.

Konfigurasikan aplikasi Anda untuk mengakses penyimpanan

Untuk menggunakan Azure Storage, Anda perlu mengunduh dan menggunakan paket Ruby Azure, yang mencakup serangkaian pustaka kenyamanan yang berkomunikasi dengan layanan REST penyimpanan.

Gunakan RubyGems untuk mendapat paket

  1. Gunakan antarmuka baris perintah seperti PowerShell (Windows), Terminal (Mac), atau Bash (Unix).
  2. Ketik gem install azure di jendela perintah untuk memasang gem dan dependensi.

Impor paket

Gunakan editor teks favorit Anda, tambahkan yang berikut ini ke bagian atas file Ruby tempat Anda berniat menggunakan penyimpanan:

require "azure"

Siapkan koneksi Azure Storage

Modul Azure akan membaca variabel lingkungan dan AZURE_STORAGE_ACCOUNT dan AZURE_STORAGE_ACCESS_KEY untuk informasi yang diperlukan untuk terkoneksi ke akun Azure Storage Anda. Jika variabel lingkungan ini tidak diatur, Anda harus menentukan informasi akun sebelum menggunakan Azure::QueueService dengan kode berikut:

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

Untuk mendapat nilai ini dari akun penyimpanan klasik atau Resource Manager di portal Microsoft Azure:

  1. Log masuk ke portal Microsoft Azure.
  2. Navigasikan ke akun penyimpanan yang ingin Anda gunakan.
  3. Di bilah Pengaturan di sebelah kanan, klik Kunci Akses.
  4. Di bilah Kunci Akses yang muncul, Anda akan melihat kunci akses 1 dan kunci akses 2. Anda dapat menggunakan salah satunya.
  5. Klik ikon salin untuk menyalin kunci ke clipboard.

Cara: Membuat antrean

Kode berikut membuat objek Azure::QueueService, yang memungkinkan Anda bekerja dengan antrean.

azure_queue_service = Azure::QueueService.new

Gunakan metode create_queue() untuk membuat antrean dengan nama yang ditentukan.

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

Cara: Menyisipkan pesan ke antrean

Untuk menyisipkan pesan ke dalam antrean, gunakan metode create_message() untuk membuat pesan baru dan menambahkannya ke antrean.

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

Cara: Mengintip pesan berikutnya

Anda dapat mengintip pesan dalam antrean tanpa menghapusnya dari antrean dengan memanggil metode peek_messages(). Secara default, peek_messages() mengintip satu pesan. Anda juga dapat menentukan berapa banyak pesan yang ingin Anda intip.

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

Cara: Mengeluarkan pesan berikutnya dari antrean

Anda dapat mengeluarkan pesan dari antrean dalam dua langkah.

  1. Saat Anda memanggil list_messages(), Anda mendapat pesan berikutnya dalam antrean secara default. Anda juga dapat menentukan berapa banyak pesan yang ingin Anda dapatkan. Pesan yang dberikan oleh list_messages() menjadi tidak terlihat oleh pesan pembacaan kode lainnya dari antrean ini. Anda meneruskan batas waktu visibilitas dalam detik sebagai suatu parameter.
  2. Untuk menyelesaikan menghapus pesan dari antrean, Anda juga harus memanggil delete_message().

Proses dua langkah yang menghapus pesan ini memastikan bahwa jika kode Anda gagal memproses pesan karena kegagalan perangkat keras atau perangkat lunak, instans lain dari kode Anda bisa mendapat pesan yang sama dan mencoba lagi. Kode Anda memanggil delete_message() tepat setelah pesan telat diproses.

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

Cara: Mengubah konten pesan yang diantrekan

Anda dapat mengubah konten suatu pesan di tempat di dalam antrean. Kode berikut ini menggunakan metode update_message() untuk memperbarui pesan. Metode ini akan mengembalikan tuple yang berisi tanda terima pop dari pesan antrean dan nilai UTC DateTime yang menunjukkan kapan pesan akan terlihat pada antrean.

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)

Cara: Opsi tambahan untuk mengeluarkan pesan dari antrean

Ada dua cara untuk mengustomisasi pengambilan pesan dari antrean.

  1. Anda bisa mendapatkan batch pesan.
  2. Anda dapat mengatur batas waktu invisibilitas yang lebih lama atau lebih pendek, yang memungkinkan kode Anda lebih banyak atau lebih sedikit waktu untuk memproses setiap pesan sepenuhnya.

Contoh kode berikut ini menggunakan metode list_messages() untuk mendapat 15 pesan dalam satu panggilan. Kemudian setiap pesan dicetak dan dihapus. Ini juga mengatur batas waktu invisibilitas pandang menjadi lima menit untuk setiap pesan.

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

Cara: Mendapatkan panjang antrean

Anda bisa mendapat estimasi dari jumlah pesan dalam antrean. Metode get_queue_metadata() ini memberi perkiraan jumlah pesan dan metadata antrean lainnya.

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

Cara: Menghapus antrean

Untuk menghapus antrean dan semua pesan yang terkandung di dalamnya, panggil metode delete_queue() pada objek antrean.

azure_queue_service.delete_queue("test-queue")

Langkah berikutnya

Sekarang setelah Anda mempelajari dasar-dasar Azure Queue Storage, ikuti tautan ini untuk mempelajari tugas penyimpanan yang lebih kompleks.

Untuk perbandingan antara antrean Azure Service Bus yang dibahas dalam artikel ini dan Azure Service Bus yang dibahas dalam Cara menggunakan antrean Service Bus, lihat Azure Queue Storage dan antrean Service Bus - dibandingkan dan dikontraskan