繁体   English   中英

哪个 TaskExecutor 用于异步日志记录?

[英]Which TaskExecutor to use for async logging?

我有一个REST web 服务,想记录任何传入和传出的XML请求。 由于它们可能非常大,而且我还必须应用某种转换,因此我想在异步线程中执行它。

到目前为止,我只是在记录器方法上使用@Async注释。 这将使用默认的SimpleAsyncTaskExecutor ,它“不重用任何线程”: https : SimpleAsyncTaskExecutor

问题:我应该更好地定义自己的ThreadPoolTaskExecutor而不是依赖默认的简单执行器吗? 为短期日志任务设置“重用线程”执行程序是否明智?

进一步考虑:我还将有一些异步数据库行更新,这些更新也应该使用@Async执行,并且可能使用相同的执行程序。

我的主要问题是:我不想考虑线程、容量、节流限制等的固定池大小。我只想告诉我的例程:“在异步线程中执行以下逻辑。” 只需在上面堆放任何东西。

我必须为此使用哪些TaskExecutors ,应该应用哪些配置?

例如下面的执行者是否适合?

@Bean
public ThreadPoolTaskExecutor asyncExecutor() {
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    executor.setCorePoolSize(4);
    return executor;
}

我应该更好地定义自己的 ThreadPoolTask​​Executor 而不是依赖默认的简单执行器吗?

除非您需要自定义,否则请使用默认的ThreadPoolTaskExecutor

为短期日志任务设置“重用线程”执行程序是否明智?

是的。

我不想考虑线程的固定池大小、容量、节流限制等。我只想告诉我的例程:“在异步线程中执行以下逻辑。” 只需在上面堆放任何东西。

我必须为此使用哪些 TaskExecutor,应该应用哪些配置?

ThreadPoolTask​​Executor已经足够好了。 在示例代码中将池大小设置为Runtime.getRuntime().availableProcessors()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM