Biblioteca cliente de fuente de cambios de Blobs de Azure Storage para .NET, versión 12.0.0-preview.40

Versión del servidor: 2021-02-12, 2020-12-06, 2020-10-02, 2020-08-04, 2020-06-12 2020-04-08, 2020-02-10 y 2019-12-12

El propósito de la fuente de cambios es proporcionar registros de transacciones de todos los cambios que se producen en los blobs y en los metadatos de blobs de la cuenta de almacenamiento. La fuente de cambios proporciona un registro ordenado, garantizado, durable, inmutable y de solo lectura de estos cambios. 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.

Código | fuentePaquete (NuGet) | Documentación del producto

Introducción

Instalar el paquete

Instale la biblioteca cliente de Blobs de Azure Storage para .NET con NuGet:

dotnet add package Azure.Storage.Blobs.ChangeFeed --prerelease

Requisitos previos

Necesita una suscripción de Azure y una cuenta de almacenamiento para usar este paquete.

Para crear una cuenta de almacenamiento, puede usar Azure Portal, Azure PowerShell o la CLI de Azure. A continuación se facilita un ejemplo mediante el uso de la CLI de Azure:

az storage account create --name MyStorageAccount --resource-group MyResourceGroup --location westus --sku Standard_LRS

Autenticar el cliente

La autenticación funciona igual que en Azure.Storage.Blobs.

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 los requisitos (consulte las condiciones de la versión actual). 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.

Puede procesar estos registros de forma incremental o completa. Cualquier número de aplicaciones cliente puede leer de manera independiente la fuente de cambios, en paralelo y a su propio ritmo. Las aplicaciones de análisis como Apache Drill o Apache Spark pueden consumir registros directamente como archivos Avro, lo que le permite procesarlos a un bajo costo, con un alto ancho de banda y sin la necesidad de escribir una aplicación personalizada.

Seguridad para subprocesos

Garantizamos que todos los métodos de instancia de cliente son seguros para subprocesos e independientes entre sí (instrucciones). Esto garantiza que la recomendación de reutilizar instancias de cliente siempre es segura, incluso entre subprocesos.

Conceptos adicionales

Opciones | de clienteAcceso a la respuesta | Operaciones | de larga duraciónControl de errores | Diagnóstico | Burla | Duración del cliente

Ejemplos

Obtener todos los eventos de la fuente de cambios

// Get all the events in the change feed.
List<BlobChangeFeedEvent> changeFeedEvents = new List<BlobChangeFeedEvent>();
await foreach (BlobChangeFeedEvent changeFeedEvent in changeFeedClient.GetChangesAsync())
{
    changeFeedEvents.Add(changeFeedEvent);
}

Obtención de eventos entre una hora de inicio y finalización

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

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

Solución de problemas

Todas las operaciones de Blob Service producirán una excepción RequestFailedException en caso de error con s útilesErrorCode. Muchos de estos errores son recuperables.

Pasos siguientes

Introducción a nuestros ejemplos de fuente de cambios:

  1. Hola mundo: obtener los cambios que se han producido en la cuenta de almacenamiento (o de forma asincrónica)
  2. Autenticación: autentíquese con cadenas de conexión, acceso público, claves compartidas, firmas de acceso compartido y Azure Active Directory.

Contribuciones

Consulte storage CONTRIBUTING.md para obtener más información sobre la compilación, las pruebas y la contribución a esta biblioteca.

Este proyecto agradece las contribuciones y sugerencias. La mayoría de las contribuciones requieren que acepte un Contrato de licencia para el colaborador (CLA) que declara que tiene el derecho a concedernos y nos concede los derechos para usar su contribución. Para obtener más información, visite cla.microsoft.com.

Este proyecto ha adoptado el Código de conducta de Microsoft Open Source. Para más información, consulte las preguntas más frecuentes del código de conducta o póngase en contacto con opencode@microsoft.com si tiene cualquier otra pregunta o comentario.