Compartir a través de


Biblioteca cliente de fuente de cambios de Blob de Azure Storage para JavaScript: versión 12.0.0-preview.4

Versión del servidor: 2019-12-12 o posterior.

La fuente de cambios proporciona un registro de transacciones ordenado, garantizado, duradero, inmutable y de solo lectura de todos los cambios que se producen en los blobs y los metadatos de blob de la cuenta de almacenamiento. Las aplicaciones cliente pueden leer estos registros en cualquier momento. La fuente de cambios le permite compilar soluciones eficaces y escalables que procesan los eventos de cambio que se producen en su cuenta de Blob Storage a un bajo costo.

Este proyecto proporciona una biblioteca cliente en JavaScript que facilita el consumo de la fuente de cambios.

Use las bibliotecas cliente de este paquete para:

  • Leer eventos de fuente de cambios, todos o dentro de un intervalo de tiempo
  • Reanudación de eventos de lectura desde una posición guardada

Vínculos principales:

Introducción

Entornos admitidos actualmente

Para más información, consulte la directiva de compatibilidad.

Requisitos previos

Instalar el paquete

La manera preferida de instalar la biblioteca cliente de fuente de cambios de blobs de Azure Storage para JavaScript es usar el administrador de paquetes npm. Escriba lo siguiente en una ventana de terminal:

npm install @azure/storage-blob-changefeed

Autenticar el cliente

Esta biblioteca usa un autenticado BlobServiceClient para inicializar. Consulte storage-blob para obtener información sobre cómo autenticar un BlobServiceClient.

Compatibilidad

Por ahora, esta biblioteca solo es compatible con Node.js.

Conceptos clave

La fuente de cambios se almacena como blobs en un contenedor especial de la cuenta de almacenamiento al costo de los precios de los blobs estándar. Puede controlar el período de retención de estos archivos en función de sus requisitos. Los eventos de cambio se anexan a la fuente de cambios como registros en la especificación de formato de Apache Avro: un formato compacto, rápido y binario que proporciona estructuras de datos enriquecidos con el esquema en línea. Este formato se usa ampliamente en el ecosistema de Hadoop, en Stream Analytics y en Azure Data Factory.

Esta biblioteca ofrece un cliente que puede usar para capturar los eventos de cambio.

Ejemplos

Inicialización del cliente de fuente de cambios

requiere BlobChangeFeedClient casi los mismos parámetros que BlobServiceClient para inicializar. Consulte storage-blob para obtener información sobre cómo crear el cliente de Blob Service. Este es un ejemplo que usa el operador 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
);

Lectura de todos los eventos en la fuente de cambios

Use BlobChangeFeedClient.listChanges() para obtener iteradores para recorrer en iteración los eventos de cambio.

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

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

Por página.

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);
  }
}

Reanudación de eventos de lectura con un 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);
  }
}

Lectura de eventos dentro de un intervalo de tiempo

Pase la hora de inicio y la hora de finalización para BlobChangeFeedClient.listChanges() capturar eventos dentro de un intervalo de tiempo.

Tenga en cuenta que, por ahora, el cliente de la fuente de cambios redondeará la hora de inicio hasta la hora más cercana y la hora de finalización hasta la hora siguiente.

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);
}

Solución de problemas

La habilitación del registro puede ayudar a descubrir información útil sobre los errores. Para ver un registro de solicitudes y respuestas HTTP, establezca la variable de entorno AZURE_LOG_LEVEL en info. Como alternativa, el registro se puede habilitar en tiempo de ejecución llamando a setLogLevel en @azure/logger:

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

setLogLevel("info");

Pasos siguientes

Más ejemplos de código:

Contribuciones

Si desea contribuir a esta biblioteca, lea la guía de contribución para obtener más información sobre cómo compilar y probar el código.

Consulte también la guía específica del almacenamiento para obtener información adicional sobre cómo configurar el entorno de prueba para las bibliotecas de almacenamiento.

Impresiones