Biblioteca de cliente do Feed de Alterações de Blobs de Armazenamento do Azure para .NET – versão 12.0.0-preview.33
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
O objetivo do feed de alterações é fornecer registos de transações de todas as alterações que ocorrem nos blobs e nos metadados do blob na sua conta de armazenamento. O feed de alterações fornece um registo ordenado, garantido, durável, imutável e só de leitura destas alterações. As aplicações cliente podem ler estes registos em qualquer altura. O feed de alterações permite-lhe criar soluções eficientes e dimensionáveis que processam eventos de alteração que ocorrem na sua conta de Armazenamento de Blobs a um custo baixo.
Código fonte | Pacote (NuGet) | Documentação do produto
Introdução
Instalar o pacote
Instale a biblioteca de cliente dos Blobs de Armazenamento do Azure para .NET com NuGet:
dotnet add package Azure.Storage.Blobs.ChangeFeed --prerelease
Pré-requisitos
Precisa de uma subscrição do Azure e de uma Conta de Armazenamento para utilizar este pacote.
Para criar uma nova Conta de Armazenamento, pode utilizar o Portal do Azure, o Azure PowerShell ou a CLI do Azure. Eis um exemplo com 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 em Azure.Storage.Blobs.
Conceitos-chave
O feed de alterações é armazenado como blobs num contentor especial na sua conta de armazenamento ao custo de preços padrão do blob. Pode controlar o período de retenção destes ficheiros com base nos seus requisitos (Veja as condições da versão atual). Os eventos de alteração são anexados ao feed de alterações como registos na especificação de formato do Apache Avro: um formato binário compacto, rápido e que fornece estruturas de dados avançadas com esquema inline. Este formato é amplamente utilizado no ecossistema do Hadoop, no Stream Analytics e Azure Data Factory.
Pode processar estes registos de forma incremental ou completa. Qualquer número de aplicações cliente pode ler o feed de alterações de forma independente, em paralelo, e ao seu próprio ritmo. As aplicações de análise, como o Apache Drill ou o Apache Spark, podem consumir registos diretamente como ficheiros Avro, o que lhe permite processá-los a baixo custo, com largura de banda elevada e sem ter de escrever uma aplicação personalizada.
Segurança de threads
Garantimos que todos os métodos de instância de cliente são seguros para threads e independentes uns dos outros (orientação). Isto garante que a recomendação de reutilização de instâncias de cliente é sempre segura, mesmo entre threads.
Conceitos adicionais
Opções de | cliente Aceder à resposta | Operações de execução prolongada | Lidar com falhas | Diagnósticos | A gozar | Duração 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 fim
// 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);
}
Resolução de problemas
Todas as operações do serviço Blob irão emitir uma RequestFailedException em caso de falha com s útilErrorCode
. Muitos destes erros são recuperáveis.
Passos seguintes
Introdução aos nossos exemplos do Feed de Alterações:
- Hello World: Obter alterações que ocorreram na sua conta de armazenamento (ou de forma assíncrona)
- Autenticação: autenticar com cadeias de ligação, acesso público, chaves partilhadas, assinaturas de acesso partilhado e o Azure Active Directory.
Contribuir
Veja a CONTRIBUTING.md de Armazenamento para obter detalhes sobre como criar, testar e contribuir para esta biblioteca.
Agradecemos todas as contribuições e sugestões para este projeto. A maioria das contribuições requerem que celebre um Contrato de Licença de Contribuição (CLA) no qual se declare que tem o direito de conceder e que, na verdade, concede-nos os direitos para utilizar a sua contribuição. Para obter detalhes, visite cla.microsoft.com.
Este projeto adotou o Microsoft Open Source Code of Conduct (Código de Conduta do Microsoft Open Source). Para obter mais informações, consulte as FAQ do Código de Conduta ou contacte opencode@microsoft.com com quaisquer perguntas ou comentários adicionais.