Convert comment to the answer. @adam-arold said it works
@EventListener
public void onContextClosed(ContextClosedEvent event) {
closeAllEmitters();
}
private void closeAllEmitters() {
List<SseEmitter> allEmitters = emitters.values().stream()
.flatMap(List::stream)
.collect(Collectors.toList());
for (SseEmitter emitter : allEmitters) {
try {
emitter.complete();
} catch (Exception e) {
log.error("Error during emitter completing");
}
}
emitters.clear();
}