Azure Storage Queue-clientbibliotheek voor JavaScript - versie 12.17.0
Azure Storage Queue biedt berichten in de cloud tussen toepassingsonderdelen. Bij het ontwerpen van schaalbare toepassingen worden toepassingsonderdelen vaak ontkoppeld, zodat ze onafhankelijk van elkaar kunnen worden geschaald. Queue Storage biedt asynchrone uitwisseling van berichten voor communicatie tussen toepassingsonderdelen, of deze nu worden uitgevoerd in de cloud, op een desktopcomputer, op een on-premises server of op een mobiel apparaat. Queue Storage biedt daarnaast ondersteuning voor het beheren van asynchrone taken en het samenstellen van proceswerkstromen.
Dit project biedt een clientbibliotheek in JavaScript waarmee u eenvoudig de Azure Storage Queue-service kunt gebruiken.
Gebruik de clientbibliotheken in dit pakket voor het volgende:
- Eigenschappen van wachtrijservice ophalen/instellen
- wachtrijen Creatie/weergeven/verwijderen
- Wachtrijberichten verzenden/ontvangen/Kort weergeven/wissen/bijwerken/verwijderen
Belangrijke koppelingen:
- Broncode
- Package (npm)
- API-referentiedocumentatie
- Productdocumentatie
- Voorbeelden
- AZURE Storage Queue REST API's
Aan de slag
Momenteel ondersteunde omgevingen
- LTS-versies van Node.js
- Nieuwste versies van Safari, Chrome, Edge en Firefox.
Zie ons ondersteuningsbeleid voor meer informatie.
Vereisten
- Een Azure-abonnement
- Een opslagaccount
Het pakket installeren
De voorkeurswijze voor het installeren van de Azure Storage Queue-clientbibliotheek voor JavaScript is het npm-pakketbeheer. Typ het volgende in een terminalvenster:
npm install @azure/storage-queue
De client verifiëren
Azure Storage ondersteunt verschillende manieren om te verifiëren. Als u wilt communiceren met de Azure Queue Storage-service, moet u een exemplaar van een Storage-client maken, QueueServiceClient
of QueueClient
bijvoorbeeld. Zie voorbeelden voor het maken van de QueueServiceClient
voor meer informatie over verificatie.
Azure Active Directory
De Azure Queue Storage-service ondersteunt het gebruik van Azure Active Directory om aanvragen voor de BIJBEHORENDE API's te verifiëren. Het @azure/identity
pakket biedt verschillende referentietypen die uw toepassing kan gebruiken om dit te doen. Raadpleeg leesmij voor @azure/identity
voor meer informatie en voorbeelden om aan de slag te gaan.
Compatibiliteit
Deze bibliotheek is compatibel met Node.js en browsers en gevalideerd op basis van LTS Node.js versies (>=8.16.0) en de nieuwste versies van Chrome, Firefox en Edge.
Web Workers
Deze bibliotheek vereist dat bepaalde DOM-objecten globaal beschikbaar zijn wanneer ze worden gebruikt in de browser. Deze webwerkrollen maken deze niet standaard beschikbaar. U moet deze invullen om deze bibliotheek te laten werken in webwerkrollen.
Raadpleeg onze documentatie voor het gebruik van Azure SDK voor JS in Web Workers voor meer informatie
Deze bibliotheek is afhankelijk van de volgende DOM-API's waarvoor externe polyfills moeten worden geladen wanneer deze worden gebruikt in webwerkrollen:
Verschillen tussen Node.js en browsers
Er zijn verschillen tussen de runtime van Node.js en browsers. Wanneer u aan de slag gaat met deze bibliotheek, let dan op API's of klassen die zijn gemarkeerd met 'ALLEEN BESCHIKBAAR IN NODE.JS RUNTIME' of 'ALLEEN BESCHIKBAAR IN BROWSERS'.
De volgende functies, interfaces, klassen of functies zijn alleen beschikbaar in Node.js
- Autorisatie van gedeelde sleutels op basis van accountnaam en accountsleutel
StorageSharedKeyCredential
- Sas-generatie (Shared Access Signature)
generateAccountSASQueryParameters()
generateQueueSASQueryParameters()
JavaScript-bundel
Als u deze clientbibliotheek in de browser wilt gebruiken, moet u eerst een bundler gebruiken. Raadpleeg onze bundeldocumentatie voor meer informatie over hoe u dit doet.
CORS
U moet CORS-regels (Cross-Origin Resource Sharing) instellen voor uw opslagaccount als u wilt ontwikkelen voor browsers. Ga naar Azure Portal en Azure Storage Explorer, zoek uw opslagaccount en maak nieuwe CORS-regels voor blob/queue/file/table-service(s).
U kunt bijvoorbeeld de volgende CORS-instellingen maken voor foutopsporing. Pas de instellingen echter zorgvuldig aan op basis van uw vereisten in de productieomgeving.
- Toegestane oorsprongen: *
- Toegestane werkwoorden: DELETE,GET,HEAD,MERGE,POST,OPTIONS,PUT
- Toegestane headers: *
- Weergegeven headers: *
- Maximale leeftijd (seconden): 86400
Belangrijkste concepten
Een wachtrij is een gegevensarchief binnen een Azure Storage Queue-serviceaccount voor het verzenden/ontvangen van berichten tussen verbonden clients.
Belangrijke gegevenstypen in onze bibliotheek met betrekking tot deze services zijn:
- A
QueueServiceClient
vertegenwoordigt een verbinding (via een URL) met een bepaald opslagaccount in de Azure Storage Queue-service en biedt API's voor het bewerken van de wachtrijen. Deze wordt geverifieerd bij de service en kan worden gebruikt om objecten te makenQueueClient
, en wachtrijen van de service te maken, te verwijderen en weer te geven. - A
QueueClient
vertegenwoordigt één wachtrij in het opslagaccount. Het kan worden gebruikt om de berichten van de wachtrij te manipuleren, bijvoorbeeld om berichten in de wachtrij te verzenden, te ontvangen en te bekijken.
Voorbeelden
Het pakket importeren
Als u de clients wilt gebruiken, importeert u het pakket in uw bestand:
const AzureStorageQueue = require("@azure/storage-queue");
U kunt ook selectief alleen de typen importeren die u nodig hebt:
const { QueueServiceClient, StorageSharedKeyCredential } = require("@azure/storage-queue");
de wachtrijserviceclient Creatie
De QueueServiceClient
vereist een URL naar de wachtrijservice en een toegangsreferentie. Het accepteert desgewenst ook enkele instellingen in de options
parameter.
met DefaultAzureCredential
van @azure/identity
pakket
Aanbevolen manier om een instantie te maken QueueServiceClient
Setup: Referentie: toegang tot blobs en wachtrijen autoriseren met Azure Active Directory vanuit een clienttoepassing - /azure/storage/common/storage-auth-aad-app
Een nieuwe AAD-toepassing registreren en namens de aangemelde gebruiker machtigingen verlenen voor toegang tot Azure Storage
- Een nieuwe toepassing registreren in Azure Active Directory (in azure-portal) - /azure/active-directory/develop/quickstart-register-app
- Selecteer
Add a permission
en kiesMicrosoft APIs
in deAPI permissions
sectie . - Schakel
Azure Storage
het selectievakje naast inuser_impersonation
en klik opAdd permissions
. Hierdoor heeft de toepassing toegang tot Azure Storage namens de aangemelde gebruiker.
Toegang verlenen tot Azure Storage Queue-gegevens met RBAC in Azure Portal
- RBAC-rollen voor blobs en wachtrijen - /azure/storage/common/storage-auth-aad-rbac-portal.
- Ga in Azure Portal naar uw opslagaccount en wijs de rol Inzender voor opslagwachtrijgegevens toe aan de geregistreerde AAD-toepassing vanaf
Access control (IAM)
het tabblad (in de linkernavigatiebalk van uw opslagaccount in azure-portal).
Omgevingsinstellingen voor het voorbeeld
- Noteer op de overzichtspagina van uw AAD-toepassing de
CLIENT ID
enTENANT ID
. Maak op het tabblad Certificaten & Geheimen een geheim en noteer dat. - Zorg ervoor dat u ,
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
als omgevingsvariabelen hebtAZURE_TENANT_ID
om het voorbeeld uit te voeren (kan gebruikmaken van process.env).
- Noteer op de overzichtspagina van uw AAD-toepassing de
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
);
[Opmerking: bovenstaande stappen zijn alleen voor Node.js]
met verbindingsreeks
U kunt ook een QueueServiceClient
instantie maken met behulp van de fromConnectionString()
statische methode met de volledige verbindingsreeks als argument. (De verbindingsreeks kunt u verkrijgen via Azure Portal.) [ALLEEN BESCHIKBAAR IN NODE.JS RUNTIME]
const { QueueServiceClient } = require("@azure/storage-queue");
const connStr = "<connection string>";
const queueServiceClient = QueueServiceClient.fromConnectionString(connStr);
Met StorageSharedKeyCredential
U kunt ook een QueueServiceClient
instantiëren met een StorageSharedKeyCredential
door accountnaam en accountsleutel door te geven als argumenten. (De accountnaam en de accountsleutel kunnen worden verkregen via de Azure-portal.) [ALLEEN BESCHIKBAAR IN 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
}
);
met SAS-token
U kunt ook een QueueServiceClient
instantiëren met een SAS (Shared Access Signatures). U kunt het SAS-token ophalen uit de Azure-portal of een token genereren met behulp van 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}`
);
Wachtrijen in dit account weergeven
Gebruik QueueServiceClient.listQueues()
de functie om de wachtrijen te herhalen, met de nieuwe for-await-of
syntaxis:
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() {
let iter1 = queueServiceClient.listQueues();
let i = 1;
for await (const item of iter1) {
console.log(`Queue${i}: ${item.name}`);
i++;
}
}
main();
U kunt ook zonder 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() {
let 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();
Zie samples/v12/typescript/listQueues.ts voor een volledig voorbeeld van herhalende wachtrijen.
Een nieuwe wachtrij maken
Gebruik QueueServiceClient.getQueueClient()
de functie om een nieuwe wachtrij te maken.
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();
Een bericht naar de wachtrij verzenden
Gebruik sendMessage()
om een bericht toe te voegen aan de wachtrij:
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();
Een bericht Kort weergeven
QueueClient.peekMessages()
maakt het mogelijk om een of meer berichten voor de wachtrij te bekijken. Deze aanroep voorkomt niet dat andere code toegang heeft tot bekeken berichten.
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();
Een bericht verwerken
Berichten worden in twee stappen verwerkt.
- Eerste aanroep
queueClient.receiveMessages()
. Hierdoor worden de berichten gedurende een standaardperiode van 30 seconden onzichtbaar voor andere code die berichten uit deze wachtrij lezen. - Wanneer het verwerken van een bericht is voltooid, roept
queueClient.deleteMessage()
u aan met de .popReceipt
Als uw code een bericht niet kan verwerken vanwege hardware- of softwarefouten, zorgt dit proces in twee stappen ervoor dat een ander exemplaar van uw code hetzelfde bericht kan krijgen en het opnieuw kan proberen.
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();
Een wachtrij verwijderen
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();
Een volledig voorbeeld van eenvoudige QueueServiceClient
scenario's vindt u in samples/v12/typescript/src/queueClient.ts.
Problemen oplossen
Het inschakelen van logboekregistratie kan helpen bij het ontdekken van nuttige informatie over fouten. Als u een logboek met HTTP-aanvragen en -antwoorden wilt zien, stelt u de AZURE_LOG_LEVEL
omgevingsvariabele in op info
. Logboekregistratie kan ook worden ingeschakeld tijdens runtime door aan te roepen setLogLevel
in de @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Volgende stappen
Meer codevoorbeelden
Bijdragen
Als u een bijdrage wilt leveren aan deze bibliotheek, leest u de handleiding voor bijdragen voor meer informatie over het bouwen en testen van de code.
Raadpleeg ook De specifieke handleiding voor opslag voor meer informatie over het instellen van de testomgeving voor opslagbibliotheken.
Azure SDK for JavaScript
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor