0 Tage Serie
java / expert
Snippet

Parallele Ereignisverteilung mit SimpleApplicationEventMulticaster

Standardmäßig verteilt der ApplicationContext von Spring Ereignisse synchron. Durch das Überschreiben des 'applicationEventMulticaster'-Beans und das Injizieren eines TaskExecutors aktivieren Sie die globale asynchrone Ereignisverarbeitung. Dies ist entscheidend für Hochdurchsatzsysteme, in denen Event-Listener nicht-blockierende Seiteneffekte ausführen, ohne den Hauptausführungsthread zu verzögern.

snippet.java
java
1
2
3
4
5
6
7
8
9
10
@Configuration
public class AsyncEventConfig {
@Bean(name = "applicationEventMulticaster")
public ApplicationEventMulticaster simpleApplicationEventMulticaster() {
SimpleApplicationEventMulticaster multicaster = new SimpleApplicationEventMulticaster();
multicaster.setTaskExecutor(new SimpleAsyncTaskExecutor());
multicaster.setErrorHandler(TaskUtils.LOG_AND_SUPPRESS_ERROR_HANDLER);
return multicaster;
}
}
spring
Erklärung
1
SimpleApplicationEventMulticaster multicaster = new SimpleApplicationEventMulticaster();
Instanziiert die Standardimplementierung für die Ereignisverteilung.
2
multicaster.setTaskExecutor(new SimpleAsyncTaskExecutor());
Weist einen Executor zu, um jeden Listener-Aufruf in einem separaten Thread zu verarbeiten.
3
multicaster.setErrorHandler(TaskUtils.LOG_AND_SUPPRESS_ERROR_HANDLER);
Stellt sicher, dass eine Exception in einem Listener die Ausführung anderer Listener nicht verhindert.