Bibliothèque de client File d’attente stockage Azure pour JavaScript - version 12.25.0
La file d’attente stockage Azure fournit une messagerie cloud entre les composants d’application. Dans la conception d’applications à des fins de mise à l’échelle, les composants d’application sont souvent découplés, afin qu’ils puissent être mis à l’échelle indépendamment. Le stockage file d’attente fournit une messagerie asynchrone pour la communication entre les composants d’application, qu’ils s’exécutent dans le cloud, sur le bureau, sur un serveur local ou sur un appareil mobile. Le stockage file d’attente prend également en charge la gestion des tâches asynchrones et la création de flux de travail de processus.
Ce projet fournit une bibliothèque cliente en JavaScript qui facilite l’utilisation du service File d’attente stockage Azure.
Utilisez les bibliothèques clientes dans ce package pour :
- Propriétés du service de file d’attente Get/Set
- Créer/répertorier/supprimer des files d’attente
- Envoyer/recevoir/afficher/afficher/effacer/mettre à jour/supprimer des messages de file d’attente
Liens clés :
- code source
- package (npm)
- Documentation de référence de l’API
- documentation produit
- Exemples
- api REST de file d’attente de stockage Azure
Commencer
Environnements actuellement pris en charge
- versions LTS de Node.js
- Dernières versions de Safari, Chrome, Edge et Firefox.
Pour plus d’informations, consultez notre de stratégie de support
Conditions préalables
Installer le package
La méthode recommandée pour installer la bibliothèque cliente File d’attente stockage Azure pour JavaScript consiste à utiliser le gestionnaire de package npm. Tapez ce qui suit dans une fenêtre de terminal :
npm install @azure/storage-queue
Authentifier le client
Stockage Azure prend en charge plusieurs façons de s’authentifier. Pour interagir avec le service Stockage File d’attente Azure, vous devez créer une instance d’un client de stockage , QueueServiceClient
ou QueueClient
par exemple. Consultez exemples pour créer le QueueServiceClient
pour en savoir plus sur l’authentification.
- Azure Active Directory
- de clé partagée
- signatures d’accès partagé
Azure Active Directory
Le service Stockage File d’attente Azure prend en charge l’utilisation d’Azure Active Directory pour authentifier les demandes auprès de ses API. Le package @azure/identity
fournit divers types d’informations d’identification que votre application peut utiliser pour ce faire. Pour plus d’informations et d’exemples, consultez le README pour @azure/identity
pour commencer.
Compatibilité
Cette bibliothèque est compatible avec Node.js et les navigateurs, et validée par rapport aux versions de LTS Node.js (>=8.16.0) et les dernières versions de Chrome, Firefox et Edge.
Web Workers
Cette bibliothèque nécessite que certains objets DOM soient globalement disponibles lorsqu’ils sont utilisés dans le navigateur, que les travailleurs web ne rendent pas disponibles par défaut. Vous devrez les polyfiller pour que cette bibliothèque fonctionne dans les workers web.
Pour plus d’informations, reportez-vous à notre documentation pour l’utilisation du Kit de développement logiciel (SDK) Azure pour JS dans web Workers
Cette bibliothèque dépend des API DOM suivantes qui nécessitent des polyfills externes chargés lors de l’utilisation dans les workers web :
Différences entre les Node.js et les navigateurs
Il existe des différences entre Node.js et le runtime des navigateurs. Lors de la prise en main de cette bibliothèque, faites attention aux API ou aux classes marquées avec « DISPONIBLE UNIQUEMENT DANS NODE.JS RUNTIME » ou « UNIQUEMENT DISPONIBLE DANS LES NAVIGATEURS ».
Les fonctionnalités, interfaces, classes ou fonctions suivantes sont disponibles uniquement dans Node.js
- Autorisation de clé partagée basée sur le nom du compte et la clé de compte
StorageSharedKeyCredential
- Génération de signature d’accès partagé (SAP)
generateAccountSASQueryParameters()
generateQueueSASQueryParameters()
JavaScript Bundle
Pour utiliser cette bibliothèque cliente dans le navigateur, vous devez d’abord utiliser un bundler. Pour plus d’informations sur la procédure à suivre, reportez-vous à notre documentation de regroupement .
CORS
Vous devez configurer règles de partage de ressources cross-origin (CORS) pour votre compte de stockage si vous devez développer pour les navigateurs. Accédez au portail Azure et à l’Explorateur Stockage Azure, recherchez votre compte de stockage, créez de nouvelles règles CORS pour les services blob/file/file/table.
Par exemple, vous pouvez créer les paramètres CORS suivants pour le débogage. Mais personnalisez soigneusement les paramètres en fonction de vos besoins dans l’environnement de production.
- Origines autorisées : *
- Verbes autorisés : DELETE,GET,HEAD,MERGE,POST,OPTIONS,PUT
- En-têtes autorisés : *
- En-têtes exposés : *
- Âge maximal (secondes) : 86400
Concepts clés
Une file d’attente est un magasin de données au sein d’un compte de service file d’attente stockage Azure pour l’envoi/la réception de messages entre les clients connectés.
Les types de données clés de notre bibliothèque liés à ces services sont les suivants :
- Un
QueueServiceClient
représente une connexion (via une URL) à un compte de stockage donné dans le service File d’attente stockage Azure et fournit des API pour manipuler ses files d’attente. Il est authentifié auprès du service et peut être utilisé pour créer des objetsQueueClient
, ainsi que créer, supprimer, répertorier les files d’attente du service. - Un
QueueClient
représente une file d’attente de unique dans le compte de stockage. Il peut être utilisé pour manipuler les messages de la file d’attente, par exemple pour envoyer, recevoir et afficher des messages dans la file d’attente.
Exemples
Importer le package
Pour utiliser les clients, importez le package dans votre fichier :
const AzureStorageQueue = require("@azure/storage-queue");
Vous pouvez également importer sélectivement uniquement les types dont vous avez besoin :
const { QueueServiceClient, StorageSharedKeyCredential } = require("@azure/storage-queue");
Créer le client du service de file d’attente
La QueueServiceClient
nécessite une URL vers le service de file d’attente et des informations d’identification d’accès. Il accepte également certains paramètres dans le paramètre options
.
avec DefaultAzureCredential
à partir du package de @azure/identity
Méthode recommandée pour instancier un QueueServiceClient
Configuration : Référence - Autoriser l’accès aux objets blob et files d’attente avec Azure Active Directory à partir d’une application cliente - /azure/storage/common/storage-auth-aad-app
Inscrire une nouvelle application AAD et accorder des autorisations d’accès au stockage Azure pour le compte de l’utilisateur connecté
- Inscrire une nouvelle application dans Azure Active Directory(dans le portail Azure) - /azure/active-directory/develop/quickstart-register-app
- Dans la section
API permissions
, sélectionnezAdd a permission
et choisissezMicrosoft APIs
. - Sélectionnez
Azure Storage
et cochez la case en regard deuser_impersonation
, puis cliquez surAdd permissions
. Cela permettrait à l’application d’accéder au stockage Azure pour le compte de l’utilisateur connecté.
Accorder l’accès aux données de file d’attente de stockage Azure avec RBAC dans le portail Azure
- Rôles RBAC pour les objets blob et les files d’attente - /azure/storage/common/storage-auth-aad-rbac-portal.
- Dans le portail Azure, accédez à votre compte de stockage et attribuez rôle Contributeur aux données de file d’attente de stockage rôle à l’application AAD inscrite à partir de
Access control (IAM)
onglet (dans la barre de navigation de gauche de votre compte de stockage dans le portail Azure).
Configuration de l’environnement pour l’exemple
- Dans la page vue d’ensemble de votre application AAD, notez les
CLIENT ID
et lesTENANT ID
. Sous l’onglet « Certificats & secrets », créez un secret et notez-le. - Vérifiez que vous avez
AZURE_TENANT_ID
,AZURE_CLIENT_ID
,AZURE_CLIENT_SECRET
en tant que variables d’environnement pour exécuter l’exemple (peut tirer parti de process.env).
- Dans la page vue d’ensemble de votre application AAD, notez les
const { DefaultAzureCredential } = require("@azure/identity");
const { QueueServiceClient } = require("@azure/storage-queue");
const account = "<account>";
const credential = new DefaultAzureCredential();
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
credential
);
[Remarque - Les étapes ci-dessus ne concernent que Node.js]
à l’aide de la chaîne de connexion
Vous pouvez également instancier un QueueServiceClient
à l’aide de la méthode statique fromConnectionString()
avec la chaîne de connexion complète comme argument. (La chaîne de connexion peut être obtenue à partir du portail Azure.) [DISPONIBLE UNIQUEMENT DANS NODE.JS RUNTIME]
const { QueueServiceClient } = require("@azure/storage-queue");
const connStr = "<connection string>";
const queueServiceClient = QueueServiceClient.fromConnectionString(connStr);
avec StorageSharedKeyCredential
Vous pouvez également instancier un QueueServiceClient
avec un StorageSharedKeyCredential
en passant le nom du compte et la clé de compte en tant qu’arguments. (Le nom du compte et la clé de compte peuvent être obtenus à partir du portail Azure.) [DISPONIBLE UNIQUEMENT DANS NODE.JS RUNTIME]
const { QueueServiceClient, StorageSharedKeyCredential } = require("@azure/storage-queue");
// Enter your storage account name and shared key
const account = "<account>";
const accountKey = "<accountkey>";
// Use StorageSharedKeyCredential with storage account and account key
// StorageSharedKeyCredential is only available in Node.js runtime, not in browsers
const sharedKeyCredential = new StorageSharedKeyCredential(account, accountKey);
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
sharedKeyCredential,
{
retryOptions: { maxTries: 4 }, // Retry options
telemetry: { value: "BasicSample/V11.0.0" } // Customized telemetry string
}
);
avec un jeton SAP
En outre, vous pouvez instancier un QueueServiceClient
avec des signatures d’accès partagé (SAP). Vous pouvez obtenir le jeton SAP à partir du portail Azure ou en générer un à l’aide de generateAccountSASQueryParameters()
.
const { QueueServiceClient } = require("@azure/storage-queue");
const account = "<account name>";
const sas = "<service Shared Access Signature Token>";
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net${sas}`
);
Répertorier les files d’attente dans ce compte
Utilisez QueueServiceClient.listQueues()
fonction pour itérer les files d’attente, avec la nouvelle syntaxe for-await-of
:
const { DefaultAzureCredential } = require("@azure/identity");
const { QueueServiceClient } = require("@azure/storage-queue");
const account = "<account>";
const credential = new DefaultAzureCredential();
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
credential
);
async function main() {
const iter1 = queueServiceClient.listQueues();
let i = 1;
for await (const item of iter1) {
console.log(`Queue${i}: ${item.name}`);
i++;
}
}
main();
Sinon, sans for-await-of
:
const { DefaultAzureCredential } = require("@azure/identity");
const { QueueServiceClient } = require("@azure/storage-queue");
const account = "<account>";
const credential = new DefaultAzureCredential();
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
credential
);
async function main() {
const iter2 = queueServiceClient.listQueues();
let i = 1;
let item = await iter2.next();
while (!item.done) {
console.log(`Queue ${i++}: ${item.value.name}`);
item = await iter2.next();
}
}
main();
Pour obtenir un exemple complet sur les files d’attente itérantes, consultez samples/v12/typescript/listQueues.ts.
Créer une file d’attente
Utilisez QueueServiceClient.getQueueClient()
fonction pour créer une file d’attente.
const { DefaultAzureCredential } = require("@azure/identity");
const { QueueServiceClient } = require("@azure/storage-queue");
const account = "<account>";
const credential = new DefaultAzureCredential();
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
credential
);
const queueName = "<valid queue name>";
async function main() {
const queueClient = queueServiceClient.getQueueClient(queueName);
const createQueueResponse = await queueClient.create();
console.log(
`Created queue ${queueName} successfully, service assigned request Id: ${createQueueResponse.requestId}`
);
}
main();
Envoyer un message à la file d’attente
Utilisez sendMessage()
pour ajouter un message à la file d’attente :
const { DefaultAzureCredential } = require("@azure/identity");
const { QueueServiceClient } = require("@azure/storage-queue");
const account = "<account>";
const credential = new DefaultAzureCredential();
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
credential
);
const queueName = "<valid queue name>";
async function main() {
const queueClient = queueServiceClient.getQueueClient(queueName);
// Send a message into the queue using the sendMessage method.
const sendMessageResponse = await queueClient.sendMessage("Hello World!");
console.log(
`Sent message successfully, service assigned message Id: ${sendMessageResponse.messageId}, service assigned request Id: ${sendMessageResponse.requestId}`
);
}
main();
Aperçu d’un message
QueueClient.peekMessages()
permet d’examiner un ou plusieurs messages devant la file d’attente. Cet appel n’empêche pas d’autres codes d’accéder aux messages aperçus.
const { DefaultAzureCredential } = require("@azure/identity");
const { QueueServiceClient } = require("@azure/storage-queue");
const account = "<account>";
const credential = new DefaultAzureCredential();
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
credential
);
const queueName = "<valid queue name>";
async function main() {
const queueClient = queueServiceClient.getQueueClient(queueName);
const peekMessagesResponse = await queueClient.peekMessages();
console.log(`The peeked message is: ${peekMessagesResponse.peekedMessageItems[0].messageText}`);
}
main();
Traitement d’un message
Les messages sont traités en deux étapes.
- Premier appel
queueClient.receiveMessages()
. Cela rend les messages invisibles à d’autres codes lisant les messages de cette file d’attente pendant une période par défaut de 30 secondes. - Lorsque vous traitez un message, appelez
queueClient.deleteMessage()
avec lepopReceipt
du message.
Si votre code ne parvient pas à traiter un message en raison d’une défaillance matérielle ou logicielle, ce processus en deux étapes garantit qu’une autre instance de votre code peut obtenir le même message et réessayer.
const { DefaultAzureCredential } = require("@azure/identity");
const { QueueServiceClient } = require("@azure/storage-queue");
const account = "<account>";
const credential = new DefaultAzureCredential();
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
credential
);
const queueName = "<valid queue name>";
async function main() {
const queueClient = queueServiceClient.getQueueClient(queueName);
const response = await queueClient.receiveMessages();
if (response.receivedMessageItems.length === 1) {
const receivedMessageItem = response.receivedMessageItems[0];
console.log(`Processing & deleting message with content: ${receivedMessageItem.messageText}`);
const deleteMessageResponse = await queueClient.deleteMessage(
receivedMessageItem.messageId,
receivedMessageItem.popReceipt
);
console.log(
`Delete message successfully, service assigned request Id: ${deleteMessageResponse.requestId}`
);
}
}
main();
Supprimer une file d’attente
const { DefaultAzureCredential } = require("@azure/identity");
const { QueueServiceClient } = require("@azure/storage-queue");
const account = "<account>";
const credential = new DefaultAzureCredential();
const queueServiceClient = new QueueServiceClient(
`https://${account}.queue.core.windows.net`,
credential
);
const queueName = "<valid queue name>";
async function main() {
const queueClient = queueServiceClient.getQueueClient(queueName);
const deleteQueueResponse = await queueClient.delete();
console.log(
`Deleted queue successfully, service assigned request Id: ${deleteQueueResponse.requestId}`
);
}
main();
Un exemple complet de scénarios de QueueServiceClient
simples se trouve à samples/v12/typescript/src/queueClient.ts.
Dépannage
L’activation de la journalisation peut vous aider à découvrir des informations utiles sur les échecs. Pour afficher un journal des requêtes et réponses HTTP, définissez la variable d’environnement AZURE_LOG_LEVEL
sur info
. Vous pouvez également activer la journalisation au moment de l’exécution en appelant setLogLevel
dans la @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Étapes suivantes
Autres exemples de code
- Exemples de stockage file d’attente
- cas de test de stockage file d’attente
Contribuant
Si vous souhaitez contribuer à cette bibliothèque, lisez le guide de contribution pour en savoir plus sur la génération et le test du code.
Consultez également guide spécifique au stockage pour plus d’informations sur la configuration de l’environnement de test pour les bibliothèques de stockage.
Azure SDK for JavaScript