Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Aperçu
Cet article présente des scénarios courants utilisant le service de stockage de files d'attente Azure. Les scénarios abordés incluent l’insertion, l’aperçu, l’obtention et la suppression des messages de file d’attente. Le code permettant de créer et de supprimer des files d’attente est également abordé.
Les exemples de cet article sont écrits en Python et utilisent la bibliothèque cliente stockage file d’attente Azure pour Python. Pour plus d’informations sur les files d’attente, consultez la section Étapes suivantes.
Qu'est-ce que le stockage de file d'attente ?
Le stockage file d'attente Azure est un service permettant de stocker un grand nombre de messages accessibles partout dans le monde grâce à des appels authentifiés utilisant HTTP ou HTTPS. Un message de file d’attente unique peut atteindre jusqu’à 64 Ko et une file d’attente peut contenir des millions de messages, jusqu’à la limite de capacité totale d’un compte de stockage. Le stockage file d’attente est souvent utilisé pour créer un backlog de travail à traiter de manière asynchrone.
Concepts du service de file d’attente
Le service File d’attente Azure contient les composants suivants :
compte de stockage : tout l’accès au stockage Azure est effectué via un compte de stockage. Pour plus d’informations sur les comptes de stockage, consultez Vue d’ensemble des comptes de stockage.
File d’attente : une file d’attente contient un ensemble de messages. Tous les messages doivent être dans une file d’attente. Notez que le nom de la file d’attente doit être en minuscules. Pour plus d'informations sur l’affectation de noms à des files d’attente, consultez Affectation de noms pour les files d'attente et les métadonnées.
Message : message dans n’importe quel format d’une taille maximale de 64 Ko. La durée maximale pendant laquelle un message peut rester dans la file d’attente est de 7 jours. Pour les versions du 29 juillet 2017 ou ultérieures, la durée de vie maximale peut être n’importe quel nombre positif, ou -1 indiquant que le message n’expire pas. Si ce paramètre est omis, la valeur par défaut de la durée de vie est de sept jours.
format d’URL : Les files d’attente peuvent être adressées en utilisant le format d’URL suivant : http://
<storage account>.queue.core.windows.net/<queue>L’URL suivante correspond à une file d’attente dans le diagramme :
http://myaccount.queue.core.windows.net/incoming-orders
Créer un compte de stockage Azure
Le moyen le plus simple de créer votre premier compte de stockage Azure consiste à utiliser le portail Azure . Pour plus d’informations, consultez la page Créer un compte de stockage.
Vous pouvez également créer un compte de stockage Azure à l’aide de Azure PowerShell, Azure CLI ou du fournisseur de ressources de stockage Azure pour .NET.
Si vous préférez ne pas créer de compte de stockage dans Azure pour l’instant, vous pouvez également utiliser l’émulateur de stockage Azurite pour exécuter et tester votre code dans un environnement local. Pour plus d’informations, consultez Utiliser l’émulateur Azurite pour le développement Azure Storage local.
Télécharger et installer le Kit de développement logiciel (SDK) Stockage Azure pour Python
Le Azure Storage SDK pour Python nécessite Python v2.7, v3.3 ou une version ultérieure.
Installer via PyPI
Pour effectuer l’installation via l’index de package Python (PyPI), tapez :
pip install azure-storage-queue
Remarque
Si vous effectuez une mise à niveau à partir du Kit de développement logiciel (SDK) Stockage Azure pour Python v0.36 ou version antérieure, désinstallez l’ancien SDK à l’aide de pip uninstall azure-storage avant d’installer le package le plus récent.
Pour obtenir d’autres méthodes d’installation, consultez Kit de développement logiciel (SDK) Azure pour Python.
Copier vos informations d’identification depuis le portail Azure
Lorsque l’exemple d’application effectue une requête auprès du stockage Azure, il doit être autorisé. Pour autoriser une demande, ajoutez les informations d’identification de votre compte de stockage à l’application sous la forme d’une chaîne de connexion. Pour afficher les informations d’identification de votre compte de stockage, effectuez les étapes suivantes :
Connectez-vous au portail Azure.
Recherchez votre compte de stockage.
Dans le volet de menu du compte de stockage, sous Sécurité + réseau, sélectionnez Clés d’accès. Ici, vous pouvez afficher les clés d’accès du compte et la chaîne de connexion complète pour chaque clé.
Dans le volet Clés d’accès, sélectionnez Afficher les clés.
Dans la section clé1, recherchez la valeur Chaîne de connexion. Sélectionnez l’icône Copier dans le Presse-papiers pour copier la chaîne de connexion. Vous ajouterez la valeur de chaîne de connexion à une variable d’environnement dans la section suivante.
Configurer votre chaîne de connexion de stockage
Après avoir copié la chaîne de connexion, écrivez-la dans une variable d’environnement sur l’ordinateur local exécutant l’application. Pour définir la variable d’environnement, ouvrez une fenêtre de console et suivez les instructions pour votre système d’exploitation. Remplacez <yourconnectionstring> par votre chaîne de connexion.
setx AZURE_STORAGE_CONNECTION_STRING "<yourconnectionstring>"
Après avoir ajouté la variable d’environnement dans Windows, vous devez démarrer une nouvelle instance de la fenêtre de commande.
Redémarrer des programmes
Après avoir ajouté la variable d’environnement, redémarrez tous les programmes en cours d’exécution qui devront la lire. Par exemple, redémarrez l’environnement ou l’éditeur de développement avant de continuer.
Configurer votre application pour accéder au stockage de files d'attente
L’objet QueueClient vous permet d’utiliser une file d’attente. Ajoutez le code suivant en haut de n’importe quel fichier Python dans lequel vous souhaitez accéder par programmation à une file d’attente Azure :
from azure.storage.queue import (
QueueClient,
BinaryBase64EncodePolicy,
BinaryBase64DecodePolicy
)
import os, uuid
Le package os prend en charge la récupération d’une variable d’environnement. Le package uuid prend en charge la génération d’un identificateur unique pour un nom de file d’attente.
Créer une file d’attente
La chaîne de connexion est récupérée à partir de la variable d’environnement AZURE_STORAGE_CONNECTION_STRING définie précédemment.
Le code suivant crée un objet QueueClient à l’aide de la chaîne de connexion de stockage.
# 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
q_name = "queue-" + str(uuid.uuid4())
# Instantiate a QueueClient object which will
# be used to create and manipulate the queue
print("Creating queue: " + q_name)
queue_client = QueueClient.from_connection_string(connect_str, q_name)
# Create the queue
queue_client.create_queue()
Les messages de file d’attente Azure sont stockés sous forme de texte. Si vous souhaitez stocker des données binaires, configurez les fonctions d’encodage et de décodage Base64 avant de placer un message dans la file d’attente.
Configurez les fonctions d’encodage et de décodage Base64 lors de la création de l’objet client.
# Setup Base64 encoding and decoding functions
base64_queue_client = QueueClient.from_connection_string(
conn_str=connect_str, queue_name=q_name,
message_encode_policy = BinaryBase64EncodePolicy(),
message_decode_policy = BinaryBase64DecodePolicy()
)
Insérer un message dans une file d’attente
Pour insérer un message dans une file d’attente, utilisez la méthode send_message.
message = u"Hello World"
print("Adding message: " + message)
queue_client.send_message(message)
Aperçu des messages
Vous pouvez consulter les messages sans les supprimer de la file d’attente en appelant la méthode peek_messages. Par défaut, cette méthode examine un seul message.
# Peek at the first message
messages = queue_client.peek_messages()
for peeked_message in messages:
print("Peeked message: " + peeked_message.content)
Modifier le contenu d’un message mis en file d’attente
Vous pouvez modifier le contenu d’un message sur place dans la file d’attente. Si le message représente une tâche, vous pouvez utiliser cette fonctionnalité pour mettre à jour l’état de la tâche.
Le code suivant utilise la méthode update_message pour mettre à jour un message. Le délai d’expiration de visibilité est défini sur 0, ce qui signifie que le message s’affiche immédiatement et que le contenu est mis à jour.
messages = queue_client.receive_messages()
list_result = next(messages)
message = queue_client.update_message(
list_result.id, list_result.pop_receipt,
visibility_timeout=0, content=u'Hello World Again')
print("Updated message to: " + message.content)
Obtenir la longueur de la file d’attente
Vous pouvez obtenir une estimation du nombre de messages dans une file d’attente.
La méthode get_queue_properties retourne les propriétés de file d’attente, y compris la approximate_message_count.
properties = queue_client.get_queue_properties()
count = properties.approximate_message_count
print("Message count: " + str(count))
Le résultat est approximatif, car les messages peuvent être ajoutés ou supprimés une fois que le service répond à votre demande.
Retirer des messages d’une file d’attente
Supprimez un message d’une file d’attente en deux étapes. Si votre code ne parvient pas à traiter un message, ce processus en deux étapes garantit que vous pouvez obtenir le même message et réessayer. Appelez delete_message une fois le message traité avec succès.
Lorsque vous appelez receive_messages, vous recevez le message suivant dans la file d’attente par défaut. Un message retourné par receive_messages devient invisible à tout autre code qui lit les messages de cette file d’attente. Par défaut, ce message reste invisible pendant 30 secondes. Pour terminer la suppression du message de la file d’attente, vous devez également appeler delete_message.
messages = queue_client.receive_messages()
for message in messages:
print("Dequeueing message: " + message.content)
queue_client.delete_message(message.id, message.pop_receipt)
Il existe deux façons de personnaliser la récupération des messages à partir d’une file d’attente. Tout d’abord, vous pouvez obtenir un lot de messages (jusqu’à 32). Ensuite, vous pouvez définir un délai d’invisibilité plus long ou plus court, ce qui permet à votre code de traiter entièrement chaque message.
L’exemple de code suivant utilise la méthode receive_messages pour obtenir des messages par lots. Ensuite, il traite chaque message au sein de chaque lot à l’aide d’une boucle de for imbriquée. Il définit également le délai d’invisibilité sur cinq minutes pour chaque message.
messages = queue_client.receive_messages(messages_per_page=5, visibility_timeout=5*60)
for msg_batch in messages.by_page():
for msg in msg_batch:
print("Batch dequeue message: " + msg.content)
queue_client.delete_message(msg)
Supprimer une file d’attente
Pour supprimer une file d’attente et tous les messages contenus dans celui-ci, appelez la méthode delete_queue.
print("Deleting queue: " + queue_client.queue_name)
queue_client.delete_queue()
Conseil / Astuce
Essayer l'Explorateur de stockage Microsoft Azure
Microsoft Azure Storage Explorer est une application autonome et gratuite de Microsoft qui vous permet d’exploiter visuellement les données de Stockage Azure sur Windows, macOS et Linux.
Étapes suivantes
Maintenant que vous avez appris les principes de base du stockage file d’attente, suivez ces liens pour en savoir plus.
- Référence de l'API Python File d'attente Azure
- Centre de développement Python
- informations de référence sur l’API REST stockage Azure
Pour obtenir des exemples de code connexes utilisant des kits SDK Python version 2 déconseillés, consultez Exemples de code à l’aide de Python version 2.