05 - Moments: eventos del paso del tiempo
Moments es una API de Spring Modulith que convierte el paso del tiempo en eventos de aplicación. Permite activar comportamientos asociados a intervalos temporales sin acoplarlos a una tarea periódica concreta.
1. Eventos disponibles
Al incluir spring-modulith-moments, se pueden consumir eventos como HourHasPassed, DayHasPassed, WeekHasPassed, MonthHasPassed, QuarterHasPassed y YearHasPassed.
@Component
class MonthlyReportListener {
@ApplicationModuleListener
void on(MonthHasPassed event) {
// Ejecutar trabajo asociado al cambio de mes.
}
}
El bean Moments publica estos eventos usando un Clock basado en UTC por defecto. Se puede registrar un Clock propio en el contexto para controlar la fuente temporal.
2. Simular el paso del tiempo
Al activar spring.modulith.moments.enable-time-machine, la implementación expone TimeMachine. Esta permite avanzar el reloj y provocar los eventos intermedios, útil para pruebas de integración de lógica dependiente del tiempo.
3. Configuración
| Propiedad | Valor predeterminado | Función |
|---|---|---|
spring.modulith.moments.enable-time-machine | false | Habilita TimeMachine |
spring.modulith.moments.granularity | horas | Granularidad mínima; puede usarse días para omitir eventos horarios |
spring.modulith.moments.locale | Locale predeterminado | Determina los límites de semana |
spring.modulith.moments.quarter-start-month | enero | Mes inicial de los trimestres |
spring.modulith.moments.zone-id | UTC | Zona horaria de las fechas publicadas |
Referencia
- [Documentación oficial: Moments](https://docs.spring.io/spring-modulith/reference/moments.html) (Spring Modulith 2.1.1).