diff --git a/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/support/CompletionRegisteringAdvisor.java b/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/support/CompletionRegisteringAdvisor.java index aaa669b1..36054b8a 100644 --- a/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/support/CompletionRegisteringAdvisor.java +++ b/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/support/CompletionRegisteringAdvisor.java @@ -23,7 +23,6 @@ import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.aop.Advisor; import org.springframework.aop.MethodMatcher; import org.springframework.aop.Pointcut; import org.springframework.aop.support.AbstractPointcutAdvisor; @@ -41,8 +40,8 @@ import org.springframework.util.Assert; import org.springframework.util.ConcurrentLruCache; /** - * An {@link Advisor} to decorate {@link TransactionalEventListener} annotated methods to mark the previously registered - * event publications as completed on successful method execution. + * An {@link org.springframework.aop.Advisor} to decorate {@link TransactionalEventListener} annotated methods to mark + * the previously registered event publications as completed on successful method execution. * * @author Oliver Drotbohm */ @@ -177,7 +176,7 @@ public class CompletionRegisteringAdvisor extends AbstractPointcutAdvisor { method, o_O.getMessage()); } - return result; + throw o_O; } // Mark publication complete if the method is a transactional event listener. diff --git a/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/support/PersistentApplicationEventMulticaster.java b/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/support/PersistentApplicationEventMulticaster.java index cfa29e41..c3df146f 100644 --- a/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/support/PersistentApplicationEventMulticaster.java +++ b/spring-modulith-events/spring-modulith-events-core/src/main/java/org/springframework/modulith/events/support/PersistentApplicationEventMulticaster.java @@ -192,7 +192,8 @@ public class PersistentApplicationEventMulticaster extends AbstractApplicationEv }); } - private void doResubmitUncompletedPublicationsOlderThan(@Nullable Duration duration, Predicate filter) { + private void doResubmitUncompletedPublicationsOlderThan(@Nullable Duration duration, + Predicate filter) { var message = duration != null ? "" : " older than %s".formatted(duration); var registry = this.registry.get(); @@ -206,8 +207,20 @@ public class PersistentApplicationEventMulticaster extends AbstractApplicationEv LOGGER.debug(getConfirmationMessage(publications) + " found."); publications.stream() // - .filter(filter) // - .forEach(this::invokeTargetListener); + .filter(filter) // + .forEach(it -> { + + try { + + invokeTargetListener(it); + + } catch (Exception o_O) { + + if (LOGGER.isErrorEnabled()) { + LOGGER.error("Error republishing event publication " + it, o_O); + } + } + }); } private static ApplicationListener executeListenerWithCompletion(EventPublication publication,