No puedo encontrar en la documentación formal de AWS Kinesis ninguna referencia explícita entre TRIM_HORIZON y el punto de control, y tampoco ninguna referencia entre LATEST y el punto de control.
¿Puedes confirmar mi teoría?
TRIM_HORIZON : en caso de que el nombre de la aplicación sea nuevo, leeré todos los registros disponibles en la secuencia. De lo contrario, el nombre de la aplicación ya se usó, luego leeré desde mi último punto de control.
LATEST : en caso de que el nombre de la aplicación sea nuevo, leeré todos los registros en la transmisión que se agregaron después de suscribirme a la transmisión. De lo contrario, el nombre de la aplicación ya se usó, leeré los mensajes de mi último punto de control.
La diferencia entre TRIM_HORIZON y LATEST es solo en caso de que el nombre de la aplicación sea nuevo.
AT_TIMESTAMP
-- de una marca de tiempo específica
TRIM_HORIZON
-- todos los mensajes disponibles en el flujo de Kinesis desde el principio (igual que antes en Kafka)
MÁS RECIENTE
-- de los mensajes más recientes, es decir, el mensaje actual que acaba de ingresar a Kinesis/Kafka y todos los mensajes entrantes desde ese momento en adelante
De la documentación de GetShardIterator (que se alinea con mi experiencia con Kinesis):
En la solicitud, puede especificar el tipo de iterador de fragmentos
AT_TIMESTAMPpara leer registros desde un punto arbitrario en el tiempo,TRIM_HORIZONpara hacer que ShardIterator apunte al último registro sin recortar en el fragmento en el sistema (el registro de datos más antiguo en el fragmento), oLATESTpara que siempre lea los datos más recientes en el fragmento.
Básicamente, la diferencia es si desea comenzar desde el registro más antiguo ( TRIM_HORIZON ), o desde "ahora mismo" ( LATEST : omitir datos entre el último punto de control y ahora).
La pregunta plantea claramente cómo se relacionan estas opciones con el punto de control . Sin embargo, ninguna de las respuestas existentes aborda el punto de control en absoluto.
Una respuesta autorizada a esta pregunta de Justin Pfifer aparece en una edición de GitHub aquí .
La parte más relevante es
La KCL siempre usará el valor en la tabla de arrendamiento si está presente. Es importante recordar que Kinesis en sí no rastrea la posición de los consumidores. El seguimiento lo proporciona la tabla de arrendamiento. Arrendamientos en el servidor KCL de doble función. Proporcionan exclusión mutua y seguimiento de posición. Entonces, para la exclusión mutua, se debe crear un contrato de arrendamiento y, para satisfacer el seguimiento de la posición, se debe seleccionar un valor inicial.
(Énfasis añadido por mí).