es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible reconstruir instantáneas cuando cambia la clase de estado en akka-persistence?

Usamos EventSourcedBehavior de akka-persistence 2.6.15 para una aplicación de CQRS/EventSourcing, con akka-persistence-jdbc 4.0.0 para almacenar eventos y instantáneas en una base de datos PostgreSQL.

Tenemos clases de estado que serializamos con instantáneas. Pero a veces esas clases de estado cambian, lo que hace que la lectura de la instantánea falle obviamente. Lo gestionamos eliminando esas instantáneas cambiadas:

delete from snapshot sn 
where sn.persistence_id::uuid in (select id from some_entity_table);

Pero para entidades con muchos eventos, cuando se envía un nuevo comando, lleva mucho tiempo llegar a la última instantánea, lo que resulta en un tiempo de espera agotado.

¿Sería posible forzar una reconstrucción de las instantáneas al iniciar la aplicación?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible forzar una reconstrucción de instantáneas al iniciar la aplicación. Una forma de hacer esto es implementar un almacén de instantáneas personalizado que ignore las instantáneas existentes y las reconstruya desde cero al iniciar. Otra opción es utilizar una herramienta como Akka Persistence Query para iterar sobre todos los eventos y construir instantáneas desde cero.

    Sin embargo, es importante tener en cuenta que reconstruir instantáneas desde cero puede ser un proceso que consume mucho tiempo, especialmente para entidades con muchos eventos. Esto significa que puede no ser factible hacerlo cada vez que la aplicación se inicie, y se debe considerar cuidadosamente si es necesario para el caso de uso específico. Además, puede ser más eficiente optimizar la estrategia de administración de instantáneas existente en lugar de depender únicamente de reconstruir instantáneas al iniciar.

Comments are closed.