Thank you for your replay Allard.
No the Saga is not receiving the event. I had the impression that the @SagaEventHandler validates the associationProperty and I believe that an exception is thrown if this is not present.
I understand that the event are serialized by the scheduler using the Java Serialization and this tested for that too.
@Test
public void serialization() {
final TodoExpiredEvent event = TodoExpiredEvent.of(TodoId.random());
final byte[] bytes = SerializationUtils.serialize(event);
final Object deserialised = SerializationUtils.deserialize(bytes);
Assert.assertEquals(event, deserialised);
Assert.assertEquals(event.getTodoId(), ((TodoExpiredEvent) deserialised).getTodoId());
}
Following are the two Saga methods in question.
@StartSaga
@SagaEventHandler(associationProperty = “todoId”)
public void handle(final TodoCreatedEvent event) {
TodoCompletionSaga.LOGGER.debug(“Todo started: {}”, event.getTodoId());
deadline = scheduler.schedule(Duration.ofSeconds(5), TodoExpiredEvent.of(event.getTodoId()));
TodoCompletionSaga.LOGGER.debug(“Deadline: {}”, deadline);
}
@EndSaga
@SagaEventHandler(associationProperty = “todoId”)
public void handle(final TodoExpiredEvent event) {
TodoCompletionSaga.LOGGER.debug(“Todo {} has expired”, event.getTodoId());
if (deadline != null) {
scheduler.cancelSchedule(deadline);
}
}
The scheduler publishes the event object but the saga’s event handler never gets triggered as shown in the following log fragment (highlighted the areas of interest)
2017-12-21 22:03:19.871 DEBUG 11604 — [ restartedMain] o.a.common.IdentifierFactory : Using default UUID-based IdentifierFactory
2017-12-21 22:03:19.874 DEBUG 11604 — [ restartedMain] o.a.commandhandling.SimpleCommandBus : Handling command [com.javacreed.examples.axon.todo.CreateTodoCommand]
2017-12-21 22:03:19.877 DEBUG 11604 — [ restartedMain] o.a.m.unitofwork.AbstractUnitOfWork : Starting Unit Of Work
2017-12-21 22:03:19.877 DEBUG 11604 — [SchedulerThread] org.quartz.core.QuartzSchedulerThread : batch acquisition of 0 triggers
2017-12-21 22:03:19.904 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.messaging.unitofwork.AbstractUnitOfWork$$Lambda$220/1848160916 for phase ROLLBACK
2017-12-21 22:03:19.905 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Notifying handlers for phase STARTED
2017-12-21 22:03:19.911 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.commandhandling.SimpleCommandBus$$Lambda$224/865163146 for phase COMMIT
2017-12-21 22:03:19.920 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.commandhandling.SimpleCommandBus$$Lambda$225/1197151042 for phase ROLLBACK
2017-12-21 22:03:19.932 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.eventhandling.AbstractEventBus$$Lambda$244/506084848 for phase PREPARE_COMMIT
2017-12-21 22:03:19.932 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.eventhandling.AbstractEventBus$$Lambda$245/1277405206 for phase COMMIT
2017-12-21 22:03:19.933 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.eventhandling.AbstractEventBus$$Lambda$246/1849321786 for phase AFTER_COMMIT
2017-12-21 22:03:19.933 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.eventhandling.AbstractEventBus$$Lambda$247/692124702 for phase CLEANUP
2017-12-21 22:03:19.935 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.commandhandling.model.LockingRepository$$Lambda$248/656475673 for phase CLEANUP
2017-12-21 22:03:19.936 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.commandhandling.model.AbstractRepository$$Lambda$252/1866405795 for phase ROLLBACK
2017-12-21 22:03:19.937 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.commandhandling.model.AbstractRepository$$Lambda$254/1835623073 for phase PREPARE_COMMIT
2017-12-21 22:03:19.939 DEBUG 11604 — [ restartedMain] o.a.m.unitofwork.AbstractUnitOfWork : Committing Unit Of Work
2017-12-21 22:03:19.939 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Notifying handlers for phase PREPARE_COMMIT
2017-12-21 22:03:20.073 DEBUG 11604 — [ restartedMain] o.a.m.unitofwork.AbstractUnitOfWork : Starting Unit Of Work
2017-12-21 22:03:20.073 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.messaging.unitofwork.AbstractUnitOfWork$$Lambda$220/1848160916 for phase ROLLBACK
2017-12-21 22:03:20.073 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.messaging.unitofwork.AbstractUnitOfWork$$Lambda$277/1956472485 for phase CLEANUP
2017-12-21 22:03:20.074 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Notifying handlers for phase STARTED
2017-12-21 22:03:20.133 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.eventhandling.saga.repository.LockingSagaRepository$$Lambda$302/1934269158 for phase CLEANUP
2017-12-21 22:03:20.138 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.eventhandling.saga.repository.AnnotatedSagaRepository$$Lambda$305/1425980838 for phase PREPARE_COMMIT
2017-12-21 22:03:20.144 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.eventhandling.saga.repository.AnnotatedSagaRepository$$Lambda$306/1155520366 for phase CLEANUP
2017-12-21 22:03:20.146 DEBUG 11604 — [ restartedMain] c.j.e.axon.todo.TodoCompletionSaga : Todo started: 7f418565-b37c-482d-b3c1-d4cbb32d5ab7
2017-12-21 22:03:20.156 DEBUG 11604 — [ restartedMain] o.q.i.jdbcjobstore.StdRowLockSemaphore : Lock ‘TRIGGER_ACCESS’ is desired by: restartedMain
2017-12-21 22:03:20.156 DEBUG 11604 — [ restartedMain] o.q.i.jdbcjobstore.StdRowLockSemaphore : Lock ‘TRIGGER_ACCESS’ is being obtained: restartedMain
2017-12-21 22:03:20.158 DEBUG 11604 — [ restartedMain] o.q.i.jdbcjobstore.StdRowLockSemaphore : Lock ‘TRIGGER_ACCESS’ given to: restartedMain
2017-12-21 22:03:20.310 DEBUG 11604 — [ restartedMain] o.q.i.jdbcjobstore.StdRowLockSemaphore : Lock ‘TRIGGER_ACCESS’ returned by: restartedMain
2017-12-21 22:03:20.311 DEBUG 11604 — [ restartedMain] c.j.e.axon.todo.TodoCompletionSaga : Deadline: Quartz Schedule token for job [event-b922da4c-5a44-4e7d-8ddc-f56d274a215c] in group [AxonFramework-Events]
2017-12-21 22:03:20.311 DEBUG 11604 — [ restartedMain] o.a.m.unitofwork.AbstractUnitOfWork : Committing Unit Of Work
2017-12-21 22:03:20.311 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Notifying handlers for phase PREPARE_COMMIT
2017-12-21 22:03:20.313 DEBUG 11604 — [SchedulerThread] org.quartz.core.QuartzSchedulerThread : batch acquisition of 0 triggers
2017-12-21 22:03:20.406 DEBUG 11604 — [ restartedMain] o.a.e.saga.repository.jpa.JpaSagaStore : Storing saga id 9db7878b-155d-4c9c-aa80-31a4319a38f8 as <com.javacreed.examples.axon.todo.TodoCompletionSaga>event-b922da4c-5a44-4e7d-8ddc-f56d274a215cAxonFramework-Events</com.javacreed.examples.axon.todo.TodoCompletionSaga>
2017-12-21 22:03:20.406 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Notifying handlers for phase COMMIT
2017-12-21 22:03:20.407 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.messaging.unitofwork.AbstractUnitOfWork$$Lambda$311/460911243 for phase AFTER_COMMIT
2017-12-21 22:03:20.407 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.messaging.unitofwork.AbstractUnitOfWork$$Lambda$312/1761807290 for phase ROLLBACK
2017-12-21 22:03:20.408 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Notifying handlers for phase COMMIT
2017-12-21 22:03:20.416 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Notifying handlers for phase AFTER_COMMIT
2017-12-21 22:03:20.422 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Notifying handlers for phase AFTER_COMMIT
2017-12-21 22:03:20.423 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Notifying handlers for phase CLEANUP
2017-12-21 22:03:20.423 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Notifying handlers for phase CLEANUP
2017-12-21 22:03:20.423 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Notifying handlers for phase CLOSED
2017-12-21 22:03:20.423 DEBUG 11604 — [ restartedMain] o.a.m.u.MessageProcessingContext : Notifying handlers for phase CLOSED
2017-12-21 22:03:20.423 DEBUG 11604 — [ restartedMain] com.javacreed.examples.axon.Demo : Seeping for 120 seconds
2017-12-21 22:03:46.625 DEBUG 11604 — [SchedulerThread] org.quartz.core.QuartzSchedulerThread : batch acquisition of 1 triggers
2017-12-21 22:03:46.632 DEBUG 11604 — [SchedulerThread] o.q.i.jdbcjobstore.StdRowLockSemaphore : Lock ‘TRIGGER_ACCESS’ is desired by: schedulerFactory_QuartzSchedulerThread
2017-12-21 22:03:46.639 DEBUG 11604 — [SchedulerThread] o.q.i.jdbcjobstore.StdRowLockSemaphore : Lock ‘TRIGGER_ACCESS’ is being obtained: schedulerFactory_QuartzSchedulerThread
2017-12-21 22:03:46.639 DEBUG 11604 — [SchedulerThread] o.q.i.jdbcjobstore.StdRowLockSemaphore : Lock ‘TRIGGER_ACCESS’ given to: schedulerFactory_QuartzSchedulerThread
2017-12-21 22:03:46.679 DEBUG 11604 — [SchedulerThread] o.q.i.jdbcjobstore.StdRowLockSemaphore : Lock ‘TRIGGER_ACCESS’ returned by: schedulerFactory_QuartzSchedulerThread
2017-12-21 22:03:46.682 DEBUG 11604 — [SchedulerThread] c.j.e.a.q.AutowiringSpringBeanJobFactory : Creating job from bundle: org.quartz.spi.TriggerFiredBundle@60feb87b
2017-12-21 22:03:46.685 DEBUG 11604 — [SchedulerThread] c.j.e.a.q.AutowiringSpringBeanJobFactory : Job created: org.axonframework.eventhandling.scheduling.quartz.FireEventJob@799c98a1
2017-12-21 22:03:46.687 DEBUG 11604 — [actory_Worker-1] org.quartz.core.JobRunShell : Calling execute on job AxonFramework-Events.event-b922da4c-5a44-4e7d-8ddc-f56d274a215c
2017-12-21 22:03:46.687 DEBUG 11604 — [actory_Worker-1] o.a.e.scheduling.quartz.FireEventJob : Starting job to publish a scheduled event
2017-12-21 22:03:46.687 DEBUG 11604 — [actory_Worker-1] o.a.m.unitofwork.AbstractUnitOfWork : Starting Unit Of Work
2017-12-21 22:03:46.688 DEBUG 11604 — [SchedulerThread] org.quartz.core.QuartzSchedulerThread : batch acquisition of 0 triggers
2017-12-21 22:03:46.693 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.messaging.unitofwork.AbstractUnitOfWork$$Lambda$220/1848160916 for phase ROLLBACK
2017-12-21 22:03:46.693 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Notifying handlers for phase STARTED
2017-12-21 22:03:46.694 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.eventhandling.scheduling.quartz.FireEventJob$$Lambda$317/1102514343 for phase COMMIT
2017-12-21 22:03:46.695 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.eventhandling.scheduling.quartz.FireEventJob$$Lambda$318/1166578761 for phase ROLLBACK
2017-12-21 22:03:46.696 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.eventhandling.AbstractEventBus$$Lambda$244/506084848 for phase PREPARE_COMMIT
2017-12-21 22:03:46.696 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.eventhandling.AbstractEventBus$$Lambda$245/1277405206 for phase COMMIT
2017-12-21 22:03:46.696 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.eventhandling.AbstractEventBus$$Lambda$246/1849321786 for phase AFTER_COMMIT
2017-12-21 22:03:46.696 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.eventhandling.AbstractEventBus$$Lambda$247/692124702 for phase CLEANUP
2017-12-21 22:03:46.696 DEBUG 11604 — [actory_Worker-1] o.a.m.unitofwork.AbstractUnitOfWork : Committing Unit Of Work
2017-12-21 22:03:46.696 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Notifying handlers for phase PREPARE_COMMIT
2017-12-21 22:03:46.756 DEBUG 11604 — [actory_Worker-1] o.a.m.unitofwork.AbstractUnitOfWork : Starting Unit Of Work
2017-12-21 22:03:46.756 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.messaging.unitofwork.AbstractUnitOfWork$$Lambda$220/1848160916 for phase ROLLBACK
2017-12-21 22:03:46.756 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.messaging.unitofwork.AbstractUnitOfWork$$Lambda$277/1956472485 for phase CLEANUP
2017-12-21 22:03:46.756 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Notifying handlers for phase STARTED
2017-12-21 22:03:46.756 DEBUG 11604 — [actory_Worker-1] o.a.m.unitofwork.AbstractUnitOfWork : Committing Unit Of Work
2017-12-21 22:03:46.762 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Notifying handlers for phase PREPARE_COMMIT
2017-12-21 22:03:46.763 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Notifying handlers for phase COMMIT
2017-12-21 22:03:46.763 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.messaging.unitofwork.AbstractUnitOfWork$$Lambda$311/460911243 for phase AFTER_COMMIT
2017-12-21 22:03:46.763 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Adding handler org.axonframework.messaging.unitofwork.AbstractUnitOfWork$$Lambda$312/1761807290 for phase ROLLBACK
2017-12-21 22:03:46.763 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Notifying handlers for phase COMMIT
2017-12-21 22:03:46.798 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Notifying handlers for phase AFTER_COMMIT
2017-12-21 22:03:46.798 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Notifying handlers for phase AFTER_COMMIT
2017-12-21 22:03:46.798 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Notifying handlers for phase CLEANUP
2017-12-21 22:03:46.798 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Notifying handlers for phase CLEANUP
2017-12-21 22:03:46.798 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Notifying handlers for phase CLOSED
2017-12-21 22:03:46.798 DEBUG 11604 — [actory_Worker-1] o.a.m.u.MessageProcessingContext : Notifying handlers for phase CLOSED
2017-12-21 22:03:46.798 INFO 11604 — [actory_Worker-1] o.a.e.scheduling.quartz.FireEventJob : Job successfully executed. Scheduled Event [GenericEventMessage] has been published.
2017-12-21 22:03:46.800 DEBUG 11604 — [actory_Worker-1] o.q.i.jdbcjobstore.StdRowLockSemaphore : Lock ‘TRIGGER_ACCESS’ is desired by: schedulerFactory_Worker-1
2017-12-21 22:03:46.801 DEBUG 11604 — [actory_Worker-1] o.q.i.jdbcjobstore.StdRowLockSemaphore : Lock ‘TRIGGER_ACCESS’ is being obtained: schedulerFactory_Worker-1
2017-12-21 22:03:46.801 DEBUG 11604 — [actory_Worker-1] o.q.i.jdbcjobstore.StdRowLockSemaphore : Lock ‘TRIGGER_ACCESS’ given to: schedulerFactory_Worker-1
2017-12-21 22:03:46.924 DEBUG 11604 — [actory_Worker-1] o.q.i.jdbcjobstore.StdRowLockSemaphore : Lock ‘TRIGGER_ACCESS’ returned by: schedulerFactory_Worker-1
2017-12-21 22:04:12.894 DEBUG 11604 — [SchedulerThread] org.quartz.core.QuartzSchedulerThread : batch acquisition of 0 triggers
2017-12-21 22:04:42.029 DEBUG 11604 — [SchedulerThread] org.quartz.core.QuartzSchedulerThread : batch acquisition of 0 triggers
2017-12-21 22:05:06.430 DEBUG 11604 — [SchedulerThread] org.quartz.core.QuartzSchedulerThread : batch acquisition of 0 triggers
2017-12-21 22:05:20.429 DEBUG 11604 — [ restartedMain] com.javacreed.examples.axon.Demo : Done
I am trying to understand what’s wrong but I cannot get my head around it. Any help is really appreciated.
Thanks again,