Compartilhar via


Biblioteca de clientes do Feed de Alterações de Blobs do Armazenamento do Azure para JavaScript – versão 12.0.0-preview.4

Versão do servidor: 2019-12-12 ou posterior.

O feed de alterações fornece um log de transações ordenado, garantido, durável, imutável e somente leitura de todas as alterações que ocorrem em blobs e metadados de blob em sua conta de armazenamento. Os aplicativos cliente podem ler esses logs a qualquer momento. O feed de alterações permite que você crie por um custo reduzido, soluções eficientes e escalonáveis que processam eventos de alteração que ocorrem na conta de Armazenamento de Blobs.

Este projeto fornece uma biblioteca de clientes em JavaScript que facilita o consumo do feed de alterações.

Use as bibliotecas de cliente neste pacote para:

  • Lendo eventos de feed de alterações, tudo ou dentro de um intervalo de tempo
  • Retomar eventos de leitura de uma posição salva

Links principais:

Introdução

Ambientes com suporte no momento

Confira nossa política de suporte para mais detalhes.

Pré-requisitos

Instalar o pacote

A maneira preferida de instalar a biblioteca de clientes do Feed de Alterações de Blobs do Armazenamento do Azure para JavaScript é usar o gerenciador de pacotes npm. Digite o seguinte em uma janela do terminal:

npm install @azure/storage-blob-changefeed

Autenticar o cliente

Essa biblioteca usa um autenticado BlobServiceClient para inicializar. Consulte storage-blob para saber como autenticar um BlobServiceClient.

Compatibilidade

Por enquanto, essa biblioteca só é compatível com Node.js.

Principais conceitos

O feed de alterações é armazenado como blobs em um contêiner especial na conta de armazenamento por um custo padrão de preço de blob. Você pode controlar o período de retenção desses arquivos com base em seus requisitos. Os eventos de alteração são anexados ao feed de alterações como registros na especificação de formato do Apache Avro: um formato compacto, rápido e binário que fornece estruturas de dados avançadas com esquema embutido. Esse formato é amplamente usado no ecossistema do Hadoop, pelo Stream Analytics e pelo Azure Data Factory.

Essa biblioteca oferece um cliente que você pode usar para buscar os eventos de alteração.

Exemplos

Inicializar o cliente do feed de alterações

O BlobChangeFeedClient requer quase os mesmos parâmetros que BlobServiceClient inicializar. Consulte storage-blob para saber como criar o cliente do serviço blob. Veja um exemplo usando 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
);

Lendo todos os eventos no Feed de Alterações

Use BlobChangeFeedClient.listChanges() para obter iteradores para iterar por meio dos eventos de alteração.

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

Retomar eventos de leitura com um 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);
  }
}

Ler eventos dentro de um intervalo de tempo

Passe a hora de início e a hora de término para BlobChangeFeedClient.listChanges() buscar eventos dentro de um intervalo de tempo.

Observe que, por enquanto, o cliente do feed de alterações arredondará o tempo de início para a hora mais próxima e arredondará a hora de término até a próxima hora.

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

Solução de problemas

A habilitação do log pode ajudar a descobrir informações úteis sobre falhas. Para ver um log de solicitações e respostas HTTP, defina a variável de ambiente AZURE_LOG_LEVEL como info. Como alternativa, o log pode ser habilitado no runtime chamando setLogLevel em @azure/logger:

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

setLogLevel("info");

Próximas etapas

Mais exemplos de código:

Contribuição

Se você quiser contribuir com essa biblioteca, leia o guia de contribuição para saber como criar e testar o código.

Consulte também o Guia específico do armazenamento para obter informações adicionais sobre como configurar o ambiente de teste para bibliotecas de armazenamento.

Impressões