共用方式為


使用 Python 2 版用戶端程式庫的 Azure 佇列儲存體程式碼範例

本文將說明使用了 Azure 佇列儲存體用戶端程式庫的程式碼範例 (適用於 Python 2 版)。

在 2023 年 3 月 31 日,我們已淘汰不符合目前 Azure SDK 指導方針的 Azure SDK 程式庫支援。 新的 Azure SDK 程式庫會定期更新,以促進一致的體驗並加強您的安全性態勢。 建議您轉換至新的 Azure SDK 程式庫,以利用新功能和重大安全性更新。

雖然較舊的程式庫仍可在 2023 年 3 月 31 日之後使用,但它們將不再收到 Microsoft 的官方支援和更新。 如需詳細資訊,請參閱支援淘汰公告

如需使用最新 12.x 版用戶端程式庫的程式碼範例,請參閱快速入門:適用於 Python 的 Azure 佇列儲存體用戶端程式庫

建立佇列

新增下列 import 指示詞:

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

下列程式碼使用儲存體連接字串來建立 QueueService 物件。

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

Azure 佇列訊息會儲存為文字。 如果您想要儲存二進位資料,請在將訊息放入佇列之前,先設定 Base64 編碼和解碼函數。

在佇列儲存體物件上設定 Base64 編碼和解碼函數:

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

將訊息插入佇列

若要將訊息插入佇列,請使用 put_message 方法建立新訊息,並將它新增至佇列。

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

查看訊息

您可以藉由呼叫 peek_messages 方法來瞄核訊息,而不需要從佇列中移除訊息。 根據預設,這個方法會瞄核單一訊息。

messages = queue_service.peek_messages(queue_name)

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

變更佇列訊息的內容

下列程式碼使用 update_message 方法來更新訊息。 可見度逾時設定為 0,表示會立即顯示訊息,並且會更新內容。

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

取得佇列長度

get_queue_metadata 方法會傳回包含 approximate_message_count 在內的佇列屬性。

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

由於服務在回應您的要求之後可以新增或移除訊息,此結果僅為近似值。

清除佇列中的訊息

呼叫 get_messages 時,依預設,您會取得佇列中的下一個訊息。 讀取此佇列訊息的任何其他程式碼皆無法看到從 get_messages 傳回的訊息。 依預設,此訊息會隱藏 30 秒。 若要完成從佇列中移除訊息的作業,您還必須呼叫 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)

自訂從佇列中擷取訊息的方法有兩種。 首先,您可以取得一批訊息 (最多 32 個)。 其次,您可以設定較長或較短的可見度逾時,讓您的程式碼有較長或較短的時間可以完全處理每個訊息。

下列程式碼範例使用 get_messages 方法,在一次呼叫中取得 16 個訊息。 接著其會使用 for 迴圈處理每個訊息。 它也會將可見度逾時設定為每個訊息五分鐘。

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)

刪除佇列

若要刪除佇列及其內含的所有訊息,請呼叫 delete_queue 方法。

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