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.
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.
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.
| 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 |