Condividi tramite


Libreria client del feed di modifiche BLOB di Archiviazione di Azure per JavaScript - versione 12.0.0-preview.4

Versione server: 2019-12-12 o versione successiva.

Il feed di modifiche fornisce un log delle transazioni ordinato, garantito, durevole, non modificabile e di sola lettura di tutte le modifiche apportate ai BLOB e ai metadati BLOB nell'account di archiviazione. Le applicazioni client possono leggere questi log in qualsiasi momento. Il feed di modifiche consente di creare soluzioni efficienti e scalabili che elaborano gli eventi di modifica che si verificano nell'account di archiviazione BLOB a un costo basso.

Questo progetto fornisce una libreria client in JavaScript che semplifica l'utilizzo del feed di modifiche.

Usare le librerie client in questo pacchetto per:

  • Lettura degli eventi del feed di modifiche, tutti o entro un intervallo di tempo
  • Ripresa degli eventi di lettura da una posizione salvata

Collegamenti principali:

Introduzione

Ambienti attualmente supportati

Per altre informazioni, vedere i criteri di supporto.

Prerequisiti

Installare il pacchetto

Il modo migliore per installare la libreria client del feed di modifiche BLOB di Archiviazione di Azure per JavaScript consiste nell'usare gestione pacchetti npm. Digitare quanto segue in una finestra del terminale:

npm install @azure/storage-blob-changefeed

Autenticare il client

Questa libreria usa un oggetto autenticato BlobServiceClient per inizializzare. Per informazioni su come autenticare un oggetto BlobServiceClient, vedere storage-blob (BLOB di archiviazione).

Compatibilità

Per il momento, questa libreria è compatibile solo con Node.js.

Concetti chiave

Il feed di modifiche viene archiviato come BLOB in un contenitore speciale nell'account di archiviazione al costo standard dei prezzi dei BLOB. È possibile controllare il periodo di conservazione di questi file in base alle esigenze. Gli eventi di modifica vengono aggiunti al feed di modifiche come record nella specifica di formato Apache Avro: un formato compatto, veloce e binario che fornisce strutture di dati avanzate con schema inline. Questo formato è largamente usato nell'ecosistema Hadoop, dall'analisi di flusso e da Azure Data Factory.

Questa libreria offre un client che è possibile usare per recuperare gli eventi di modifica.

Esempio

Inizializzare il client del feed di modifiche

Richiede BlobChangeFeedClient quasi gli stessi parametri da BlobServiceClient inizializzare. Per informazioni su come creare il client del servizio BLOB, vedere storage-blob . Di seguito è riportato un esempio che usa StorageSharedKeyCredential.

const { StorageSharedKeyCredential } = require("@azure/storage-blob");
const { BlobChangeFeedClient } = require("@azure/storage-blob-changefeed");

// 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 changeFeedClient = new BlobChangeFeedClient(
  // When using AnonymousCredential, following url should include a valid SAS or support public access
  `https://${account}.blob.core.windows.net`,
  sharedKeyCredential
);

Lettura di tutti gli eventi nel feed di modifiche

Usare BlobChangeFeedClient.listChanges() per ottenere iteratori per scorrere gli eventi di modifica.

const { BlobChangeFeedEvent } = require("@azure/storage-blob-changefeed");

let changeFeedEvents = [];
for await (const event of changeFeedClient.listChanges()) {
  changeFeedEvents.push(event);
}

Per pagina.

const { BlobChangeFeedEvent } = require("@azure/storage-blob-changefeed");

let changeFeedEvents = [];
for await (const eventPage of changeFeedClient.listChanges().byPage()) {
  for (const event of eventPage.events) {
    changeFeedEvents.push(event);
  }
}

Ripresa della lettura degli eventi con continuationToken

const { BlobChangeFeedEvent } = require("@azure/storage-blob-changefeed");

let changeFeedEvents = [];
const firstPage = await changeFeedClient
  .listChanges()
  .byPage({ maxPageSize: 10 })
  .next();
for (const event of firstPage.value.events) {
  changeFeedEvents.push(event);
}

// Resume iterating from the previous position with the continuationToken.
for await (const eventPage of changeFeedClient
  .listChanges()
  .byPage({ continuationToken: firstPage.value.continuationToken })) {
  for (const event of eventPage.events) {
    changeFeedEvents.push(event);
  }
}

Lettura di eventi entro un intervallo di tempo

Passare l'ora di inizio e l'ora di fine a per BlobChangeFeedClient.listChanges() recuperare gli eventi entro un intervallo di tempo.

Si noti che per il momento, il client del feed di modifiche arrotonda l'ora di inizio fino all'ora più vicina e l'ora di fine del round fino all'ora successiva.

const { BlobChangeFeedEvent } = require("@azure/storage-blob-changefeed");

const start = new Date(Date.UTC(2020, 1, 21, 22, 30, 0)); // will be rounded down to 22:00
const end = new Date(Date.UTC(2020, 4, 8, 21, 10, 0)); // will be rounded up to 22:00

let changeFeedEvents = [];
// You can also provide just a start or end time.
for await (const event of changeFeedClient.listChanges({ start, end })) {
  changeFeedEvents.push(event);
}

Risoluzione dei problemi

L'abilitazione della registrazione consente di individuare informazioni utili sugli errori. Per visualizzare un log di richieste e risposte HTTP, impostare la variabile di ambiente AZURE_LOG_LEVEL su info. In alternativa, la registrazione può essere abilitata in fase di esecuzione chiamando setLogLevel in @azure/logger:

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

Passaggi successivi

Altri esempi di codice:

Contributo

Per contribuire a questa libreria, leggere la guida ai contributi per altre informazioni su come compilare e testare il codice.

Per altre informazioni sulla configurazione dell'ambiente di test per le librerie di archiviazione, vedere anche Guida specifica dell'archiviazione.

Impression