Tengo problemas para implementar dynamodbstreams. Queremos obtener registros de los cambios justo en el momento en que se cambia la tabla de dynamodb.
Usamos el ejemplo de Java de https://docs.aws.amazon.com/en_en/amazondynamodb/latest/developerguide/Streams.LowLevel.Walkthrough.html y lo tradujimos para nuestro proyecto de C++. En lugar de ShardIteratorType.TRIM_HORIZON , usamos ShardIteratorType.LATEST) . Además, actualmente estoy probando con una tabla existente y no sé cuántos registros esperar.
La mayoría de las veces, cuando itero sobre los fragmentos que recupero de Aws::DynamoDBStreams::DynamoDBStreamsClient y Aws::DynamoDBStreams::Model::DescribeStreamRequest, no veo ningún registro. Para probar, cambio las entradas en la tabla dynamodb a través de la consola aws. Pero a veces (y no sé por qué) hay registros y funciona como se espera.
Estoy seguro de que entiendo mal el concepto de flujos y especialmente de fragmentos y registros. Mi pensamiento es que necesito encontrar una manera de encontrar el fragmento más reciente y encontrar los datos más recientes en ese fragmento.
¿No es esto lo que haría ShardIteratorType.LATEST? ¿Cómo puedo encontrar los datos más recientes en mi transmisión?
Agradezco todos sus pensamientos y tengo curiosidad por saber qué sucede con mi primera publicación de stackoverflow.
Mejor david
¿Cómo puedo encontrar los datos más recientes en mi transmisión?
¿Cómo definiría los datos más recientes? ¿Últimas 10 entradas? ¿Última entrada? ¿O datos que aún no están en el fragmento? La pregunta puede sonar tonta, pero la respuesta hace la diferencia.
La opción, LATEST , que está utilizando establecerá el encabezado del iterador justo después de la última entrada, lo que significa que, a menos que lleguen nuevos datos después de que se haya creado el iterador, no habrá nada que leer.
Si por los datos más recientes se refiere a algunos registros que ya están en el fragmento, entonces no puede usar LATEST . La opción fácil es usar TRIM_HORIZON .
O aún más fácil sería suscribir la función lambda a esa transmisión que se invocará automáticamente cada vez que se coloque un nuevo registro en la transmisión (y el registro se pasa a esa función lambda como carga útil), lo que podría ser preferible si necesita manejar eventos en tiempo casi real.