Partager via


Utilisation du stockage de files d'attente avec Ruby

Conseil / Astuce

Testez Microsoft Azure Storage Explorer

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.

Aperçu

Ce guide vous montre comment effectuer des scénarios courants à l’aide du service de Stockage de File d’attente de Microsoft Azure. Les exemples sont écrits à l’aide de l’API Azure Ruby. Les scénarios abordés incluent l’insertion, l’aperçu, l’obtention et la suppression de messages de file d’attente, ainsi que la création et la suppression de files d’attente.

Qu'est-ce que le stockage de file d'attente ?

Le stockage Azure Queue Storage est un service permettant de stocker un grand nombre de messages accessibles partout dans le monde via 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 :

composants de la File d’attente du service Azure

  • 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 se réfère à 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.

Créer une application Ruby

Créez une application Ruby. Pour obtenir des instructions, consultez Créer une application Ruby dans App Service sur Linux.

Configurer votre application pour accéder au stockage

Pour utiliser stockage Azure, vous devez télécharger et utiliser le package Azure Ruby, qui inclut un ensemble de bibliothèques pratiques qui communiquent avec les services REST de stockage.

Utiliser RubyGems pour obtenir le package

  1. Utilisez une interface de ligne de commande telle que PowerShell (Windows), Terminal (Mac) ou Bash (Unix).
  2. Tapez gem install azure dans la fenêtre de commande pour installer la gemme et les dépendances.

Importation du package

Utilisez votre éditeur de texte favori, ajoutez ce qui suit en haut du fichier Ruby dans lequel vous envisagez d’utiliser le stockage :

require "azure"

Configurer une connexion stockage Azure

Le module Azure lit les variables AZURE_STORAGE_ACCOUNT d’environnement et AZURE_STORAGE_ACCESS_KEY pour obtenir des informations nécessaires pour se connecter à votre compte stockage Azure. Si ces variables d’environnement ne sont pas définies, vous devez spécifier les informations de compte avant d’utiliser Azure::QueueService avec le code suivant :

Azure.config.storage_account_name = "<your azure storage account>"
Azure.config.storage_access_key = "<your Azure storage access key>"

Pour obtenir ces valeurs à partir d’un compte de stockage Classique ou Resource Manager dans le portail Azure :

  1. Connectez-vous au portail Azure.
  2. Accédez au compte de stockage que vous souhaitez utiliser.
  3. Dans le panneau Paramètres à droite, cliquez sur Clés d’accès.
  4. Dans le panneau Clés d’accès qui s’affiche, vous verrez la clé d’accès 1 et la clé d’accès 2. Vous pouvez utiliser l’une ou l’autre de ces options.
  5. Cliquez sur l’icône de copie pour copier la clé dans le Presse-papiers.

Guide pratique pour créer une file d’attente

Le code suivant crée un Azure::QueueService objet, qui vous permet d’utiliser des files d’attente.

azure_queue_service = Azure::QueueService.new

Utilisez la create_queue() méthode pour créer une file d’attente avec le nom spécifié.

begin
  azure_queue_service.create_queue("test-queue")
rescue
  puts $!
end

Guide pratique pour insérer un message dans une file d’attente

Pour insérer un message dans une file d’attente, utilisez la méthode create_message() afin de créer un message et l’ajouter à la file d’attente.

azure_queue_service.create_message("test-queue", "test message")

Guide pratique pour examiner le message suivant

Vous pouvez lire furtivement le message au début de la file d’attente sans l’enlever de la file d’attente en appelant la méthode peek_messages(). Par défaut, peek_messages() examine brièvement un seul message. Vous pouvez également spécifier le nombre de messages que vous souhaitez afficher.

result = azure_queue_service.peek_messages("test-queue",
  {:number_of_messages => 10})

Procédure : retirer le prochain message de la file d'attente

Vous pouvez supprimer un message d’une file d’attente en deux étapes.

  1. Lorsque vous appelez list_messages(), vous obtenez le message suivant dans une file d’attente par défaut. Vous pouvez également spécifier le nombre de messages que vous souhaitez obtenir. Les messages retournés deviennent list_messages() invisibles à tout autre code lisant les messages de cette file d’attente. Vous passez le délai d’expiration de visibilité en secondes en tant que paramètre.
  2. Pour terminer la suppression du message de la file d’attente, vous devez également appeler delete_message().

Ce processus en deux étapes de suppression d’un message garantit que lorsque votre code ne parvient pas à traiter un message en raison d’une défaillance matérielle ou logicielle, une autre instance de votre code peut obtenir le même message et réessayer. Votre code appelle delete_message() juste après le traitement du message.

messages = azure_queue_service.list_messages("test-queue", 30)
azure_queue_service.delete_message("test-queue",
  messages[0].id, messages[0].pop_receipt)

Guide pratique pour 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. Le code suivant utilise la méthode update_message() pour mettre à jour un message. La méthode renvoie un tuple qui contient l'accusé de réception du message de file d'attente et une valeur UTC DateTime qui représente quand le message sera visible sur la file d'attente.

message = azure_queue_service.list_messages("test-queue", 30)
pop_receipt, time_next_visible = azure_queue_service.update_message(
  "test-queue", message.id, message.pop_receipt, "updated test message",
  30)

Procédure : options supplémentaires pour le retrait des messages

Il existe deux façons de personnaliser la récupération des messages à partir d’une file d’attente.

  1. Vous pouvez obtenir un lot de messages.
  2. Vous pouvez définir un délai d’invisibilité plus long ou plus court, ce qui permet à votre code de traiter complètement chaque message.

L’exemple de code suivant utilise la list_messages() méthode pour obtenir 15 messages dans un appel. Ensuite, il imprime et supprime chaque message. Il définit également le délai d’invisibilité sur cinq minutes pour chaque message.

azure_queue_service.list_messages("test-queue", 300
  {:number_of_messages => 15}).each do |m|
  puts m.message_text
  azure_queue_service.delete_message("test-queue", m.id, m.pop_receipt)
end

Procédure : obtenir la longueur de la file d’attente

Vous pouvez obtenir une estimation du nombre de messages dans la file d’attente. La get_queue_metadata() méthode retourne le nombre approximatif de messages et d’autres métadonnées de file d’attente.

message_count, metadata = azure_queue_service.get_queue_metadata(
  "test-queue")

Procédure : supprimer une file d’attente

Pour supprimer une file d'attente et tous les messages qu'elle contient, appelez la méthode delete_queue() sur l'objet file d'attente.

azure_queue_service.delete_queue("test-queue")

Étapes suivantes

Maintenant que vous avez appris les principes de base du stockage file d’attente, suivez ces liens pour en savoir plus sur les tâches de stockage plus complexes.

Pour une comparaison entre stockage file d’attente Azure abordé dans cet article et les files d’attente Azure Service Bus décrites dans Comment utiliser des files d’attente Service Bus, consultez Stockage file d’attente Azure et Files d’attente Service Bus - comparé et contrasté