簡體   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