Azure Queue Storage-kódminták a Python 2-es verziójának ügyfélkódtárait használva
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 az Azure SDK jelenlegi irányelveinek. Az új Azure SDK-kódtárakat rendszeresen frissítjük, hogy egységes élményeket teremtsen, és megerősítse a biztonsági helyzetét. Javasoljuk, hogy térjen át 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, a Továbbiakban nem kapnak hivatalos támogatást és frissítéseket a Microsofttól. További információt a támogatási kivezetésről szóló közleményben talál.
A legújabb, 12.x-es ügyfélkódtár-verziót használó kódmintákért lásd : Rövid útmutató: Azure Queue Storage ügyfélkódtár Pythonhoz.
Üzenetsor 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 storage 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.
Base64 kódolási és dekódolási függvények 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 üzenetsorba
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 megnézheti az üzeneteket, hogy eltávolítaná őket az peek_messages
üzenetsorból. Alapértelmezés szerint ez a metódus 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 a metódust használja egy update_message
üzenet frissítéséhez. A láthatóság időtúllépése 0-ra 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 az üzenetsor tulajdonságait adja vissza, beleértve a következőt: approximate_message_count
.
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ésére.
Üzenetek törlése
Amikor meghívja get_messages, a következő üzenet alapértelmezés szerint megjelenik az üzenetsorban. A visszaadott get_messages
üzenetek láthatatlanná válnak 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 delete_message is meg kell hívnia.
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 a get_messages
metódust használja 16 üzenet lekérésére egy hívásban. Ezután az egyes üzeneteket egy for
hurok használatával dolgozza fel. 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)
Üzenetsor 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)