I have 3 event listeners listening on the same event:
- Save in DB
- Cache
- Publish message
Where 1 and 2 execute synchronously in order and 3 independently and asynchronously. I have enabled @EnableAsync.
@Order(1)
@EventListener
fun handle(update: String) {
logger.info("Database $update")
//throw IOException()
}
@Order(2)
@EventListener
fun handle(update: String) {
logger.info("Cache $update")
}
@Async
@EventListener
fun handle(update: String) {
logger.info("Kafka $update")
}
Works as expected:
[nio-8080-exec-4] controller.Listener2 : Database user22
[nio-8080-exec-4] controller.Listener1 : Cache user22
[ task-21] controller.Listener3 : Kafka user22
Problem arises when Database handler fails:
[nio-8080-exec-7] controller.Listener2 : Database user22
[nio-8080-exec-7] controller.Controller : Failed to invoke event listener
Why wouldn't the asynchronous event listener get executed?