Azure Queue Storage-kódminták Python 2-es verziójú ügyfélkódtárak használatával

Ez a cikk olyan kódmintákat mutat be, amelyek a PythonHoz készült Azure Queue Storage ügyfélkódtár 2. verzióját használják.

2023. március 31-én megszüntettük az Azure SDK-kódtárak támogatását, amelyek nem felelnek meg a jelenlegi Azure SDK-irányelveknek. Az új Azure SDK-kódtárak rendszeresen frissülnek az egységes felületek kialakításának elősegítése és a biztonsági helyzetének megerősítése érdekében. Ajánlott áttérni az új Azure SDK-kódtárakra, hogy kihasználhassa az új képességeket és a kritikus biztonsági frissítéseket.

Bár a régebbi kódtárak 2023. március 31-e után is használhatók, már nem kapnak hivatalos támogatást és frissítéseket a Microsofttól. További információkért lásd a támogatási nyugdíjazási bejelentést.

A legújabb, 12.x-es ügyfélkódtár-verziót használó kódmintákért tekintse meg a Pythonhoz készült Azure Queue Storage-ügyfélkódtár rövid útmutatóját.

Sor létrehozása

Adja hozzá a következő import irányelveket:

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

Az alábbi kód létrehoz egy objektumot QueueService a tárolási kapcsolati sztring használatával.

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

Az Azure üzenetsor-üzenetei szövegként vannak tárolva. Ha bináris adatokat szeretne tárolni, állítsa be a Base64 kódolási és dekódolási függvényeket, mielőtt üzenetet helyez az üzenetsorba.

A Base64 kódolási és dekódolási függvényének konfigurálása Queue Storage-objektumon:

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

Üzenet beszúrása egy várólistára

Ha üzenetsorba szeretne beszúrni egy üzenetet, a put_message metódussal hozzon létre egy új üzenetet, és adja hozzá az üzenetsorhoz.

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

Betekintés az üzenetekbe

A metódus meghívásával anélkül is betekinthet az üzenetekbe, hogy eltávolítaná őket az peek_messages üzenetsorból. Ez a metódus alapértelmezés szerint egyetlen üzenetre néz.

messages = queue_service.peek_messages(queue_name)

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

Üzenetsorban található üzenet tartalmának módosítása

Az alábbi kód egy üzenet frissítésére használja a update_message metódust. A láthatóság időtúllépése 0 értékre van állítva, ami azt jelenti, hogy az üzenet azonnal megjelenik, és a tartalom frissül.

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

Az üzenetsor hosszának lekérése

A get_queue_metadata metódus a sor tulajdonságait adja vissza, beleértve approximate_message_count-t.

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

Az eredmény csak hozzávetőleges, mert az üzenetek hozzáadhatók vagy eltávolíthatók, miután a szolgáltatás válaszolt a kérésre.

Üzenetek sorból eltávolítása

Amikor meghívja get_messages, alapértelmezés szerint a következő üzenet lesz az üzenetsorban. A visszaadott get_messages üzenet láthatatlanná válik az üzenetsorból érkező üzeneteket olvasó többi kód számára. Alapértelmezés szerint az üzenet 30 másodpercig marad láthatatlan. Az üzenet üzenetsorból való eltávolításának befejezéséhez meg kell hívnia a delete_message függvényt is.

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)

Két módon szabhatja testre az üzenetek lekérését egy üzenetsorból. Az első lehetőség az üzenetkötegek (legfeljebb 32) lekérése. A második lehetőség az, hogy beállít egy hosszabb vagy rövidebb láthatatlansági időkorlátot, így a kódnak lehetősége van hosszabb vagy rövidebb idő alatt teljesen feldolgozni az egyes üzeneteket.

Az alábbi példakód 16 üzenet lekérésére használja a get_messages metódust egy hívásban. Ezután egy for ciklusban dolgozza fel az egyes üzeneteket. Mindemellett a láthatatlansági időkorlátot minden üzenethez öt percre állítja be.

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)

Sor törlése

Ha törölni szeretne egy üzenetsort és az abban található összes üzenetet, hívja meg a metódust delete_queue .

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