Springboot警告!处理java.util.concurrent.Callable需要一个执行器

4si2a6ki  于 2023-02-04  发布在  Spring
关注(0)|答案(2)|浏览(123)

我正在运行一个Spring-Boot Service v2.3.5.RELEASE。它是一个非常占用进程的API。它调用JNI-〉C++。在执行这样的命令时,我收到以下警告:
需要执行器来处理java.util.concurrent.Callable返回值。请在MVC配置中的“异步支持”下配置任务执行器。当前使用的SimpleAsyncTaskExecutor不适合负载。!!
这样的警告最终会导致微服务崩溃吗?
如何应对这一警告?

ni65a41a

ni65a41a1#

这样的警告最终会导致微服务崩溃吗?
"负重",(不如)赌一把!)(不是警告本身,而是抱怨的事实)
如何应对这一警告?

    • 当(我们认为)"负载"不成问题时,我们 * 可以 * 忽略警告。**但解决方案并不昂贵:

参见:Asynchronous REST API generating warning
引用:

@Configuration
@EnableAsync
public class AsyncConfig  implements AsyncConfigurer {

  @Bean
  protected WebMvcConfigurer webMvcConfigurer() {
    return new WebMvcConfigurerAdapter() {
        @Override
        public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
            configurer.setTaskExecutor(getTaskExecutor());
        }
    };
  }

  @Bean
  protected ConcurrentTaskExecutor getTaskExecutor() {
    return new ConcurrentTaskExecutor(Executors.newFixedThreadPool(5));
  }
}

或者,我们可以配置任意(警告消失:非平凡的)TaskExecutor实现。
另见:

3npbholx

3npbholx2#

我通过使用2个@Configuration bean修复了这个问题,如下所示:

@Configuration
@EnableAsync
public class MyApplicationConfiguration {
}

以及

@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {
    @Override
    public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
        configurer.setTaskExecutor(asyncTaskExecutor());
    }

    @Bean
    public AsyncTaskExecutor asyncTaskExecutor() {
        return new ConcurrentTaskExecutor(Executors.newFixedThreadPool(5));
    }
}

相关问题