我有一个REST
网络服务,想记录任何传入和传出的XML
请求。由于它们可能非常大,而且我还必须应用某种转换,我想在异步线程中执行它。
到目前为止,我只是@Async
在记录器方法上使用注释。这将使用默认值SimpleAsyncTaskExecutor
,即“不重用任何线程”:
https ://docs.spring.io/spring/docs/4.3.x/spring-framework-reference/htmlsingle/#scheduling-task-executor-types
问题:我应该更好地定义自己的ThreadPoolTaskExecutor
而不是依赖默认的简单执行器吗?为短期的日志记录任务设置一个“重用线程”执行器是否明智?
进一步考虑:我还将进行一些异步数据库行更新,这些更新也应该使用执行@Async
,并且可能使用相同的执行程序。
我的主要问题是:我不想考虑线程池的固定大小、容量、油门限制等。我只想告诉我的例程:“在异步线程中执行以下逻辑。” 只需在上面堆放任何东西。
我必须使用哪个TaskExecutors
,应该应用哪个配置?
例如,以下执行人适合吗?
@Bean
public ThreadPoolTaskExecutor asyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(4);
return executor;
}