Biblioteca de clientes do Feed de Alterações de Blobs de Armazenamento do Azure para .NET – versão 12.0.0-preview.40
Versão do servidor: 2021-02-12, 2020-12-06, 2020-10-02, 2020-08-04, 2020-06-12 2020-04-08, 2020-02-10 e 2019-12-12
A finalidade do feed de alterações é fornecer logs de transação de todas as alterações que ocorrem nos blobs e nos metadados de blob da conta de armazenamento. O feed de alterações fornece o log ordenado, garantido, durável, imutável e de somente leitura dessas alterações. 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.
Código-fonte | Pacote (NuGet) | Documentação do produto
Introdução
Instalar o pacote
Instale a biblioteca de clientes de Blobs de Armazenamento do Azure para .NET com o NuGet:
dotnet add package Azure.Storage.Blobs.ChangeFeed --prerelease
Pré-requisitos
Você precisa de uma assinatura do Azure e uma Conta de Armazenamento para usar esse pacote.
Para criar uma nova Conta de Armazenamento, você pode usar o Portal do Azure, Azure PowerShell ou a CLI do Azure. Aqui, está um exemplo usando a CLI do Azure:
az storage account create --name MyStorageAccount --resource-group MyResourceGroup --location westus --sku Standard_LRS
Autenticar o Cliente
A autenticação funciona da mesma forma que no Azure.Storage.Blobs.
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 (consulte as condições da versão atual). 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.
Você pode processar esses logs de forma incremental ou completa. Qualquer número de aplicativos cliente podem ler de forma independente o feed de alterações em paralelo e em seu próprio ritmo. Aplicativos de análise, como o Apache Drill ou o Apache Spark, podem consumir logs diretamente como arquivos Avro, o que permite processá-los a um baixo custo, com largura de banda alta e sem precisar escrever um aplicativo personalizado.
Acesso thread-safe
Garantimos que todos os métodos de instância do cliente sejam thread-safe e independentes uns dos outros (diretriz). Isso garante que a recomendação de reutilize instâncias de cliente seja sempre segura, mesmo entre threads.
Conceitos adicionais
Opções | do clienteAcessando a resposta | Operações de execução prolongada | Tratamento de falhas | Diagnostics | Zombando | Tempo de vida do cliente
Exemplos
Obter todos os eventos no Feed de Alterações
// Get all the events in the change feed.
List<BlobChangeFeedEvent> changeFeedEvents = new List<BlobChangeFeedEvent>();
await foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedClient.GetChangesAsync())
{
changeFeedEvents.Add(changeFeedEvent);
}
Obter eventos entre uma hora de início e de término
// Create the start and end time. The change feed client will round start time down to
// the nearest hour, and round endTime up to the next hour if you provide DateTimeOffsets
// with minutes and seconds.
DateTimeOffset startTime = new DateTimeOffset(2017, 3, 2, 15, 0, 0, TimeSpan.Zero);
DateTimeOffset endTime = new DateTimeOffset(2020, 10, 7, 2, 0, 0, TimeSpan.Zero);
// You can also provide just a start or end time.
await foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedClient.GetChangesAsync(
start: startTime,
end: endTime))
{
changeFeedEvents.Add(changeFeedEvent);
}
Retomar com continuationToken
string continuationToken = null;
await foreach (Page<BlobChangeFeedEvent> page in changeFeedClient.GetChangesAsync().AsPages(pageSizeHint: 10))
{
foreach (BlobChangeFeedEvent changeFeedEvent in page.Values)
{
changeFeedEvents.Add(changeFeedEvent);
}
// Get the change feed continuation token. The continuation token is not required to get each page of events,
// it is intended to be saved and used to resume iterating at a later date.
continuationToken = page.ContinuationToken;
break;
}
// Resume iterating from the pervious position with the continuation token.
await foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedClient.GetChangesAsync(
continuationToken: continuationToken))
{
changeFeedEvents.Add(changeFeedEvent);
}
Solução de problemas
Todas as operações do serviço Blob lançarão uma RequestFailedException em caso de falha com s úteisErrorCode
. Muitos desses erros são recuperáveis.
Próximas etapas
Introdução aos nossos exemplos do Feed de Alterações:
- Olá, Mundo: obter alterações que ocorreram em sua conta de armazenamento (ou de forma assíncrona)
- Autenticação: autentique-se com cadeias de conexão, acesso público, chaves compartilhadas, assinaturas de acesso compartilhado e Azure Active Directory.
Participante
Consulte a CONTRIBUTING.md de Armazenamento para obter detalhes sobre como criar, testar e contribuir para essa biblioteca.
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um CLA (Contrato de Licença do Colaborador) declarando que você tem o direito de nos conceder, e de fato concede, os direitos de usar sua contribuição. Para obter detalhes, visite cla.microsoft.com.
Este projeto adotou o Código de Conduta de Software Livre da Microsoft. Para obter mais informações, confira as Perguntas frequentes sobre o Código de Conduta ou contate opencode@microsoft.com para enviar outras perguntas ou comentários.