Код: Выделить всё
@RestController
public class MyController {
private final Flux flux1;
private final Flux flux2;
@GetMapping(produces = APPLICATION_NDJSON_VALUE)
public Flux subscribe() {
var mergedFlux = Flux.merge(this.flux1, this.flux2).doOnCancel(() -> {
log.debug("canceled");
}).doOnError(e -> {
log.error("error", e);
});
return keepAlive(Duration.of(10, ChronoUnit.SECONDS);, mergedFlux);
}
private Flux keepAlive(Duration interval, Flux flux) {
Flux heartBeat = Flux.interval(interval)
.map(t -> new HeartBeat()).doFinally(signalType -> log.debug("HearBeat
closed"));
return Flux.merge(flux, heartBeat);
}
}
Код: Выделить всё
Exception in thread "AsyncExecutor-1" java.lang.IllegalStateException: A non-container (application) thread attempted to use the AsyncContext after an error had occurred and the call to AsyncListener.onError() had returned. This is not allowed to avoid race conditionsКод: Выделить всё
@Configuration
public class Config implements WebMvcConfigurer {
@Override
public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
configurer.setTaskExecutor(poolTaskExecutor());
}
@Bean(name = "AsyncExecutor")
public AsyncTaskExecutor poolTaskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(1);
executor.setMaxPoolSize(2);
executor.setThreadNamePrefix("AsyncExecutor-");
executor.initialize();
return executor;
}
Как я могу это предотвратить?
Я использую Spring Web MVC, а не Spring Webflux.>
Подробнее здесь: https://stackoverflow.com/questions/791 ... -exception
Мобильная версия