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 d602f86c..b68d933b 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 @@ -94,12 +94,8 @@ public class PersistentApplicationEventMulticaster extends AbstractApplicationEv return; } - var txListeners = new TransactionalEventListeners(listeners); - var eventToPersist = getEventToPersist(event); - - registry.get().store(eventToPersist, txListeners.stream() // - .map(TransactionalApplicationListener::getListenerId) // - .map(PublicationTargetIdentifier::of)); + new TransactionalEventListeners(listeners) + .ifPresent(it -> storePublications(it, getEventToPersist(event))); for (ApplicationListener listener : listeners) { listener.onApplicationEvent(event); @@ -146,6 +142,15 @@ public class PersistentApplicationEventMulticaster extends AbstractApplicationEv return listener; } + private void storePublications(Stream> listeners, + Object eventToPersist) { + + var identifiers = listeners.map(TransactionalApplicationListener::getListenerId) // + .map(PublicationTargetIdentifier::of); + + registry.get().store(eventToPersist, identifiers); + } + private static Object getEventToPersist(ApplicationEvent event) { return PayloadApplicationEvent.class.isInstance(event) // @@ -257,5 +262,9 @@ public class PersistentApplicationEventMulticaster extends AbstractApplicationEv .findFirst() .ifPresent(callback); } + + public boolean hasListeners() { + return !listeners.isEmpty(); + } } }