Bagikan melalui


Sampel kode Azure Queue Storage menggunakan pustaka klien Python versi 2

Artikel ini memperlihatkan sampel kode yang menggunakan versi 2 dari pustaka klien Azure Queue Storage untuk Python.

Pada 31 Maret 2023, kami menghentikan dukungan untuk pustaka Azure SDK yang tidak sesuai dengan pedoman Azure SDK saat ini. Pustaka Azure SDK baru diperbarui secara teratur untuk mendorong pengalaman yang konsisten dan memperkuat postur keamanan Anda. Disarankan agar Anda beralih ke pustaka Azure SDK baru untuk memanfaatkan kemampuan baru dan pembaruan keamanan penting.

Meskipun pustaka yang lebih lama masih dapat digunakan melebihi 31 Maret 2023, pustaka tersebut tidak akan lagi menerima dukungan dan pembaruan resmi dari Microsoft. Untuk informasi selengkapnya, lihat pengumuman penghentian layanan dukungan.

Untuk sampel kode menggunakan versi pustaka klien versi 12.x terbaru, lihat Mulai Cepat: Pustaka klien Azure Queue Storage untuk Python.

Membuat antrean

Tambahkan instruksi import berikut:

from azure.storage.queue import (
        QueueService,
        QueueMessageFormat
)

Kode berikut membuat objek QueueService menggunakan string koneksi penyimpanan.

# Retrieve the connection string from an environment
# variable named AZURE_STORAGE_CONNECTION_STRING
connect_str = os.getenv("AZURE_STORAGE_CONNECTION_STRING")

# Create a unique name for the queue
queue_name = "queue-" + str(uuid.uuid4())

# Create a QueueService object which will
# be used to create and manipulate the queue
print("Creating queue: " + queue_name)
queue_service = QueueService(connection_string=connect_str)

# Create the queue
queue_service.create_queue(queue_name)

Pesan antrean Azure disimpan sebagai teks. Jika Anda ingin menyimpan data biner, atur fungsi pengodean dan pendekodean Base64 sebelum meletakkan pesan dalam antrean.

Konfigurasikan fungsi pengodean dan dekode Base64 pada objek Queue Storage:

# Setup Base64 encoding and decoding functions
queue_service.encode_function = QueueMessageFormat.binary_base64encode
queue_service.decode_function = QueueMessageFormat.binary_base64decode

Sisipkan pesan ke antrean

Untuk menyisipkan pesan ke dalam antrean, gunakan metode put_message untuk membuat pesan baru dan menambahkannya ke antrean.

message = u"Hello, World"
print("Adding message: " + message)
queue_service.put_message(queue_name, message)

Mengintip pesan

Anda dapat mengintip pesan dalam antrean tanpa menghapusnya dengan memanggil metode peek_messages. Secara default, metode ini melihat satu pesan.

messages = queue_service.peek_messages(queue_name)

for peeked_message in messages:
    print("Peeked message: " + peeked_message.content)

Ubah konten pesan yang diantrekan

Kode berikut ini menggunakan metode update_message untuk memperbarui pesan. Batas waktu visibilitas diatur ke 0, yang berarti pesan segera muncul dan konten diperbarui.

messages = queue_service.get_messages(queue_name)

for message in messages:
    queue_service.update_message(
        queue_name, message.id, message.pop_receipt, 0, u"Hello, World Again")

Dapatkan panjang antrean

Metode get_queue_metadata menampilkan properti antrean termasuk approximate_message_count.

metadata = queue_service.get_queue_metadata(queue_name)
count = metadata.approximate_message_count
print("Message count: " + str(count))

Hasilnya hanya perkiraan karena pesan dapat ditambahkan atau dihapus setelah layanan menanggapi permintaan Anda.

Menghapus pesan

Saat Anda memanggil get_messages, Anda mendapatkan pesan berikutnya dalam antrean secara default. Pesan yang dikembalikan dari get_messages menjadi tidak terlihat oleh kode lain yang membaca pesan dari antrean ini. Secara default, pesan ini tetap tidak terlihat selama 30 detik. Untuk menyelesaikan penghapusan pesan dari antrean, Anda juga harus memanggil delete_message.

messages = queue_service.get_messages(queue_name)

for message in messages:
    print("Deleting message: " + message.content)
    queue_service.delete_message(queue_name, message.id, message.pop_receipt)

Ada dua cara untuk mengkustomisasi pengambilan pesan dari antrean. Pertama, Anda bisa mendapatkan sekumpulan pesan (hingga 32). Kedua, Anda dapat mengatur batas waktu tidak terlihat yang lebih lama atau lebih pendek, yang memungkinkan kode Anda lebih banyak atau lebih sedikit waktu untuk memproses setiap pesan sepenuhnya.

Contoh kode berikut menggunakan metode get_messages untuk mendapat 16 pesan dalam satu panggilan. Kemudian, ini memproses setiap pesan menggunakan loop for. Metode ini juga mengatur batas waktu invisibilitas menjadi lima menit untuk setiap pesan.

messages = queue_service.get_messages(queue_name, num_messages=16, visibility_timeout=5*60)

for message in messages:
    print("Deleting message: " + message.content)
    queue_service.delete_message(queue_name, message.id, message.pop_receipt)

Menghapus antrean

Untuk menghapus antrean dan semua pesan yang terkandung di dalamnya, panggil metode delete_queue.

print("Deleting queue: " + queue_name)
queue_service.delete_queue(queue_name)