Digamos que quería tener una saga creada por algún evento, luego me senté y esperé durante unas horas, y si no pasa nada, envía algún comando.Sagas basadas en tiempo con Event Sourcing
Ahora, si esta Saga estaba todo en la memoria y tuve que reiniciar la aplicación/servidor, la saga se descargaría y nunca se volvería a ver, ¿verdad?
¿Utilizaría Event Sourcing para acelerar esta Saga una vez que el sistema vuelva a estar en línea?
Si es así, necesitaría prácticamente una tienda de eventos separada con "sagas activas" que se puedan reproducir al inicio del sistema, para que mis Sagas se pongan al día. Hasta ahora, me parece bien, pero ¿cómo implementaría el tiempo de espera?
Necesitaría alguna manera de "simular" los tiempos de espera en la reproducción, teniendo en cuenta que puede haber varios tiempos de espera dependiendo de los eventos que entren en la saga.
¿Cómo puedo hacer una saga que viva durante 7 días? Estoy seguro de que debe persistir en caso de reinicio del servicio, ¿verdad? –
@MauroDestro Realmente no tiene que mantener sus sagas en la memoria cuando usa Event Sourcing. Piense en una saga como una entidad que puede reproducir antes de que deba manejar un Evento. Compare cómo reproduciría un agregado antes de que deba manejar un comando. Usar el enfoque de Jonathan para manejar los tiempos muertos (convirtiéndolos en eventos en sí mismos) hace posible reproducir el "tiempo" también. –