SDK para procesadores de fuentes de cambios de .NET: descarga y notas de la versión (heredado)

SE APLICA A: NoSQL

Vínculos
Descarga del SDK NuGet
Documentación de la API Documentación de referencia de la API de biblioteca de procesadores de fuente de cambios
Introducción Primeros pasos con el SDL para los procesadores de fuente de cambios de .NET
Plataforma admitida actualmente Microsoft .NET Framework 4.5
Microsoft .NET Core

Nota:

Si usa el procesador de fuente de cambios, consulte la versión 3.x más reciente del SDK de .NET, que tiene una fuente de cambios incorporada en el SDK.

Notas de la versión

compilaciones v2

2.5.0

  • Se ha agregado un nuevo constructor para la clase Microsoft.Azure.Documents.ChangeFeedProcessor.Logging.TraceLogProvider que toma una instancia de System.Diagnostics.TraceSource como argumento. Esto permite que TraceLogProvider, que se usa para el seguimiento de .net, se cree mediante programación a partir de una instancia personalizada de TraceSource inicializada en el código fuente. Antes de este cambio, solo era posible configurar el seguimiento de .net mediante el archivo App.config.

2.4.0

  • Se ha agregado compatibilidad con colecciones de concesión que se pueden particionar con la clave de partición definida como /partitionKey. Antes de este cambio, la clave de partición de la colección de concesiones tenía que definirse como /id.
  • Esta versión permite usar colecciones de concesión con la API para Gremlin, ya que las colecciones de Gremlin no pueden tener la clave de partición definida como /id.

2.3.2

  • Se ha agregado compatibilidad del almacén de concesión con el SDK V3 que permite rutas de migración activas. Una aplicación puede migrar al SDK V3 y volver a migrar a la biblioteca de procesadores de fuente de cambios sin perder ningún estado.

2.3.1

  • Se corrigió un caso cuando el motivo de cierre de FeedProcessing.ChangeFeedObserverCloseReason.Unknown se envió a FeedProcessing.IChangeFeedObserver.CloseAsync, si no se encuentra la partición o si la réplica de destino no está actualizada con la sesión de lectura. En estos casos, se usan ahora los motivos de cierre FeedProcessing.ChangeFeedObserverCloseReason.ResourceGone y FeedProcessing.ChangeFeedObserverCloseReason.ReadSessionNotAvailable.
  • Se ha agregado un nuevo motivo de cierre FeedProcessing.ChangeFeedObserverCloseReason.ReadSessionNotAvailable que se envía para cerrar el observador de la fuente de cambios cuando la réplica de destino no está actualizada con la sesión de lectura.

2.3.0

  • Se ha agregado un nuevo método ChangeFeedProcessorBuilder.WithCheckpointPartitionProcessorFactory y su interfaz pública correspondiente ICheckpointPartitionProcessorFactory. Esto permite que la implementación de la interfaz IPartitionProcessor use el mecanismo de comprobación integrado. La nueva fábrica es similar a la IPartitionProcessorFactory actual, con la excepción de que su método Create también toma el parámetro ILeaseCheckpointer.
  • Solo se puede usar uno de los dos métodos, ya sea ChangeFeedProcessorBuilder.WithPartitionProcessorFactory o ChangeFeedProcessorBuilder.WithCheckpointPartitionProcessorFactory, para la misma instancia de ChangeFeedProcessorBuilder.

2.2.8

  • Mejoras de estabilidad y diagnóstico:
    • Se agregó compatibilidad para detectar las lecturas de la fuente de cambios que tardan mucho tiempo. Cuando tarda más tiempo que el valor especificado por la ChangeFeedProcessorOptions.ChangeFeedTimeout propiedad , se realizan los pasos siguientes:
      • Se anula la operación para leer la fuente de cambios en la partición problemática.
      • La instancia del procesador de la fuente de cambios quita la propiedad de la concesión problemática. La concesión quitada se recogerá durante el siguiente paso de adquisición de la concesión, que realizará la misma instancia de procesador de fuente de cambios u otra. De este modo, la lectura de la fuente de cambios comenzará de nuevo.
      • Se envía una incidencia al monitor de estado. El monitor de estado predeterminado envía todas las incidencias detectadas al registro de seguimiento.
    • Se ha agregado una nueva propiedad pública: ChangeFeedProcessorOptions.ChangeFeedTimeout. El valor predeterminado de esta propiedad es 10 minutos.
    • Se ha agregado un nuevo valor de enumeración público: Monitoring.MonitoredOperation.ReadChangeFeed. Cuando el valor de HealthMonitoringRecord.Operation se establece en Monitoring.MonitoredOperation.ReadChangeFeed, indica que la incidencia de estado está relacionada con la lectura de la fuente de cambios.

2.2.7

  • Se ha mejorado la estrategia de equilibrio de carga para el escenario cuando la obtención de todas las concesiones tarda más tiempo que el intervalo de expiración de la concesión, por ejemplo, debido a problemas de red:
    • En este escenario, el algoritmo de equilibrio de carga se usa para considerar erróneamente las concesiones como expiradas, lo que provoca el robo de concesiones de propietarios activos. Esto puede desencadenar el reequilibrio innecesario de muchas concesiones.
    • Este problema se ha corregido en esta versión evitando volver a probar el conflicto mientras se adquiere una concesión expirada que el propietario no ha cambiado y posponiendo la adquisición de una concesión expirada a la siguiente iteración de equilibrio de carga.

2.2.6

  • Control mejorado de las excepciones del observador.
  • Información más completa sobre los errores del observador:
    • Cuando se cierra el observador debido a una excepción lanzada por la propiedad ProcessChangesAsync, el método CloseAsync no recibirá el parámetro reason establecido en ChangeFeedObserverCloseReason.ObserverError.
    • Seguimientos agregados para identificar errores en el código de usuario en un observador.

2.2.5

  • Se agregó compatibilidad para controlar la división en colecciones que usan el rendimiento de la base de datos compartida.
    • Esta versión corrige un problema que se puede producir durante la división en colecciones que usan el rendimiento de la base de datos compartida al dividir el resultado en particiones reequilibrando únicamente con un intervalo clave de partición secundario creado, en lugar de dos. Cuando esto sucede, el procesador de fuente de cambios puede quedarse atascado al eliminar la concesión para el intervalo de claves de partición antiguo y no crear concesiones nuevas. Este problema se ha corregido en esta versión.

2.2.4

  • Se ha agregado la nueva propiedad ChangeFeedProcessorOptions.StartContinuation que admite el inicio de la fuente de cambios desde el token de continuación de la solicitud. Solo se utiliza cuando la colección de concesiones está vacía o una concesión no tiene ContinuationToken. En las concesiones de la colección de concesiones que tengan ContinuationToken establecido, se usa ContinuationToken y se omite ChangeFeedProcessorOptions.StartContinuation.

2.2.3

  • Se ha agregado compatibilidad con el uso de almacén personalizado para conservar los tokens de continuación por partición.
    • Por ejemplo, un almacén de concesiones personalizadas puede ser la colección de concesiones de Azure Cosmos DB con particiones de alguna manera personalizadas.
    • Los almacenes de concesiones personalizadas pueden utilizar el nuevo punto de extensibilidad ChangeFeedProcessorBuilder.WithLeaseStoreManager(ILeaseStoreManager) y la interfaz pública ILeaseStoreManager.
    • Se ha refactorizado la interfaz ILeaseManager en varias interfaces de rol.
  • Cambio importante menor: se ha quitado el punto de extensibilidad ChangeFeedProcessorBuilder.WithLeaseManager(ILeaseManager), utilice ChangeFeedProcessorBuilder.WithLeaseStoreManager(ILeaseStoreManager) en su lugar.

2.2.2

  • Esta versión corrige un problema que se produce durante el procesamiento de una división en la colección supervisada y el uso de una colección de concesiones con particiones. Al procesar una concesión de partición de división, es posible que no se pueda eliminar la concesión correspondiente a esa partición. Este problema se ha corregido en esta versión.

2.2.1

  • Cálculo del estimador fijo para las cuentas con varias regiones de escritura y un formato de token de sesión nuevo.

2.2.0

  • Compatibilidad agregada para las colecciones de concesión con particiones. La clave de partición debe definirse como /id.
  • Cambio importante menor: los métodos de la interfaz IChangeFeedDocumentClient y la clase ChangeFeedDocumentClient se han cambiado para incluir los parámetros RequestOptions y CancellationToken. IChangeFeedDocumentClient es un punto de extensibilidad avanzado que le permite proporcionar una implementación personalizada del cliente de documentos para usarla con procesadores de fuente de cambios; por ejemplo, decore DocumentClient e intercepte todas las llamadas a él para realizar un seguimiento adicional, un control de errores, etc. Con esta actualización, el código que implementa IChangeFeedDocumentClient debe cambiarse para incluir nuevos parámetros en la implementación.
  • Mejoras de diagnósticos menores.

2.1.0

  • Se agregó una nueva API, Task<IReadOnlyList<RemainingPartitionWork>> IRemainingWorkEstimator.GetEstimatedRemainingWorkPerPartitionAsync(). Esto puede usarse para obtener el trabajo estimado para cada partición.
  • Admite el SDK de Microsoft.Azure.DocumentDB 2.0. Requiere Microsoft.Azure.DocumentDB 2.0 o posterior.

2.0.6

  • Se ha agregado una propiedad ChangeFeedEventHost.HostName pública para la compatibilidad con la versión 1.

2.0.5

  • Se ha corregido una condición de carrera que se produce durante la división de la partición. La condición de carrera puede dar lugar a la adquisición de la concesión y perderla inmediatamente durante la división de la partición y causar contención. Se ha corregido el problema de la condición de carrera con esta versión.

2.0.4

  • SDK de GA

2.0.3-prerelease

  • Se han corregido los siguientes problemas:

    • Al producirse la división de particiones, podrían modificarse procesamientos de documentos duplicados antes de la partición.
    • GetEstimatedRemainingWork API devolvió 0 cuando no había concesiones en la colección de concesiones.
  • Se han hecho públicas las siguientes excepciones. Las extensiones que implementan IPartitionProcessor pueden iniciar estas excepciones.

    • Microsoft.Azure.Documents.ChangeFeedProcessor.Exceptions.LeaseLostException.
    • Microsoft.Azure.Documents.ChangeFeedProcessor.Exceptions.PartitionException.
    • Microsoft.Azure.Documents.ChangeFeedProcessor.Exceptions.PartitionNotFoundException.
    • Microsoft.Azure.Documents.ChangeFeedProcessor.Exceptions.PartitionSplitException.

2.0.2-prerelease

  • Cambios menores en la API:
    • Se quitó ChangeFeedProcessorOptions.IsAutoCheckpointEnabled, que estaba marcado como obsoleto.

2.0.1-prerelease

  • Mejoras de estabilidad:
    • Mejor administración de la inicialización del almacén de concesiones. Cuando el almacén de concesiones está vacío, solo lo puede iniciar una instancia de procesador. Las otras esperarán.
    • Liberación o renovación de concesión más estable y eficaz. Renovar o liberar una concesión de una partición es independiente de la renovación de otras. En v1, se hacia de manera secuencial en todas las particiones.
  • Nueva API v2:
    • Patrón de generador para la construcción flexible del procesador: la clase ChangeFeedProcessorBuilder.
      • Puede tomar cualquier combinación de parámetros.
      • Puede tomar la instancia DocumentClient para supervisar o conceder colecciones (no disponible en v1).
    • IChangeFeedObserver.ProcessChangesAsync ahora toma CancellationToken.
    • IRemainingWorkEstimator: el estimador de trabajo restante se puede usar de forma independiente del procesador.
    • Nuevos puntos de extensibilidad:
      • IPartitionLoadBalancingStrategy: para el equilibrio de carga personalizado de particiones entre instancias del procesador.
      • ILease, ILeaseManager: para la administración personalizada de concesiones.
      • IPartitionProcessor: para cambios de procesamiento personalizados en una partición.
  • Logging: usa la biblioteca LibLog.
  • Compatible 100 % con la API v1.
  • Base de código nueva.
  • Compatible con el SDK de .NET para SQL, versiones 1.21.1 y superior.

compilaciones v1

1.3.3

  • Se han agregado más registros.
  • Se ha corregido la pérdida DocumentClient al llamar varias veces a la estimación de trabajo pendiente.

1.3.2

  • Correcciones de la estimación de trabajo pendiente.

1.3.1

  • Mejoras de estabilidad.
    • Corrección para administrar el problema de las tareas canceladas que puede detener a los observadores en algunas particiones.
  • Compatibilidad con puntos de control manuales.
  • Compatible con el SDK de .NET para SQL, versiones 1.21 y posteriores.

1.2.0

  • Agrega compatibilidad con .NET Standard 2.0. El paquete admite ahora los monikers de plataforma netstandard2.0 y net451.
  • Compatible con el SDK de .NET para SQL, versiones 1.17.0 y posteriores.
  • Compatible con el SDK de .NET Core para SQL, versiones 1.5.1 y posteriores.

1.1.1

  • Corrige un problema con el cálculo de la estimación de trabajo restante cuando la fuente de cambios estaba vacía o no había trabajo pendiente.
  • Compatible con el SDK de .NET para SQL, versiones 1.13.2 y posteriores.

1.1.0

  • Agregue un método para obtener una estimación de trabajo restante que se va a procesar en la fuente de cambio.
  • Compatible con el SDK de .NET para SQL, versiones 1.13.2 y posteriores.

1.0.0

Fechas de lanzamiento y de retirada

Microsoft notificará la retirada de un SDK con al menos 12 meses de antelación para facilitar la transición a una versión compatible o más reciente. Solo se agregan nuevas características, funcionalidad y optimizaciones al SDK actual, por lo que se recomienda actualizar siempre a la última versión del SDK tan pronto como sea posible.

Advertencia

Después del 31 de agosto de 2022, Azure Cosmos DB ya no hará correcciones de errores, no agregará nuevas características ni proporcionará soporte técnico para las versiones 1. x de Azure Cosmos DB para .NET o el SDK de .NET Core para la API para NoSQL. Si prefiere no realizar la actualización, el servicio Azure Cosmos DB seguirá atendiendo a las solicitudes enviadas desde la versión 1.x del SDK.


Versión Fecha de la versión Fecha de retirada
2.5.0 15 de mayo de 2023 ---
2.4.0 6 de mayo de 2021 ---
2.3.2 11 de agosto de 2020 ---
2.3.1 30 de julio de 2020 ---
2.3.0 2 de abril de 2020 ---
2.2.8 28 de octubre de 2019 ---
2.2.7 14 de mayo de 2019 ---
2.2.6 29 de enero de 2019 ---
2.2.5 13 de diciembre de 2018 ---
2.2.4 29 de noviembre de 2018 ---
2.2.3 19 de noviembre de 2018 ---
2.2.2 31 de octubre de 2018 ---
2.2.1 24 de octubre de 2018 ---
1.3.3 8 de mayo de 2018 ---
1.3.2 18 de abril de 2018 ---
1.3.1 13 de marzo de 2018 ---
1.2.0 31 de octubre de 2017 ---
1.1.1 29 de agosto de 2017 ---
1.1.0 13 de agosto de 2017 ---
1.0.0 7 de julio de 2017 ---

Preguntas más frecuentes

¿Cómo se me notificará de la retirada del SDK?

Microsoft le notificará 12 meses antes de la finalización del soporte técnico del SDK que se retira para facilitar una transición sin problemas a un SDK compatible. Se le notificará a través de diversos canales de comunicación: Azure Portal, actualizaciones de Azure y comunicación directa a los administradores de servicios asignados.

¿Puedo crear aplicaciones con un SDK de Azure Cosmos DB que se retirará durante el período de 12 meses?

Sí, podrá crear, implementar y modificar aplicaciones mediante el SDK de Azure Cosmos DB que se retirará durante el período de aviso de 12 meses. Se recomienda que migre a una versión compatible más reciente del SDK de Azure Cosmos DB durante el período de aviso de 12 meses, según corresponda.

Tras la fecha de retirada, ¿qué ocurre con las aplicaciones que usan el SDK de Azure Cosmos DB no compatible?

Después de la fecha de retirada, Azure Cosmos DB ya no hará correcciones de errores, ni agregará nuevas características, ni proporcionará soporte técnico para las versiones del SDK retiradas. Si prefiere no realizar la actualización, el servicio Azure Cosmos DB seguirá atendiendo las solicitudes enviadas desde las versiones retiradas del SDK.

¿Qué versiones del SDK tendrán las características y actualizaciones más recientes?

Se agregarán nuevas características y actualizaciones solo a la versión secundaria más reciente de la versión del SDK principal compatible más reciente. Se recomienda que use siempre la versión más reciente para aprovechar las ventajas de las nuevas características, mejoras de rendimiento y correcciones de errores. Si usa una versión anterior del SDK que no se haya retirado, las solicitudes realizadas a Azure Cosmos DB seguirán funcionando, pero no tendrá acceso a las nuevas funcionalidades.

¿Qué debo hacer si no puedo actualizar la aplicación antes de una fecha límite?

Se recomienda que actualice al SDK más reciente tan pronto como sea posible. Después de etiquetar un SDK para su retirada, tendrá 12 meses para actualizar la aplicación. Si no puede realizar la actualización en la fecha de retirada, Azure Cosmos DB seguirá atendiendo las solicitudes enviadas desde las versiones retiradas del SDK, por lo que las aplicaciones en ejecución seguirán funcionando. Aunque Azure Cosmos DB ya no hará correcciones de errores, ni agregará nuevas características ni proporcionará soporte técnico para las versiones del SDK retiradas.

Si tiene un plan de soporte técnico y requiere soporte técnico, póngase en contacto con nosotros al abrir una incidencia de soporte técnico.

¿Cómo puedo solicitar que se agreguen características a un SDK o conector?

No siempre se agregan de inmediato características nuevas a los SDK o conectores. Si no se admite una característica que le gustaría agregar, agregue comentarios a nuestro foro de la comunidad.

Consulte también

Para más información sobre Azure Cosmos DB, consulte la página del servicio Microsoft Azure Cosmos DB.