Delen via


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:

Aan de slag

Momenteel ondersteunde omgevingen

Zie ons ondersteuningsbeleid voor meer informatie.

Vereisten

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 maken QueueClient , 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 kies Microsoft APIsin de API permissions sectie .
    • Schakel Azure Storage het selectievakje naast in user_impersonation en klik op Add 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 en TENANT ID. Maak op het tabblad Certificaten & Geheimen een geheim en noteer dat.
    • Zorg ervoor dat u , AZURE_CLIENT_IDAZURE_CLIENT_SECRET als omgevingsvariabelen hebt AZURE_TENANT_IDom het voorbeeld uit te voeren (kan gebruikmaken van process.env).
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.

Weergaven