Tabla de Contenidos

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