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
1
2
3
4
5
6
7
8
9
10
@Configurationpublic 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.