[英]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;
}
我應該更好地定義自己的 ThreadPoolTaskExecutor 而不是依賴默認的簡單執行器嗎?
除非您需要自定義,否則請使用默認的ThreadPoolTaskExecutor
。
為短期日志任務設置“重用線程”執行程序是否明智?
是的。
我不想考慮線程的固定池大小、容量、節流限制等。我只想告訴我的例程:“在異步線程中執行以下邏輯。” 只需在上面堆放任何東西。
我必須為此使用哪些 TaskExecutor,應該應用哪些配置?
ThreadPoolTaskExecutor已經足夠好了。 在示例代碼中將池大小設置為Runtime.getRuntime().availableProcessors()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.