2016-08-08 96 views
0

我正在使用Spring Boot,並且我有一個POST端點需要執行各種操作,例如將對象保存到數據庫,然後調用3-4個其他服務。但是,我想在數據庫調用持續不久後返回一個響應,然後在另一個線程上異步調用其他服務?對其他3-4個服務的呼叫可以最終保持一致(例如,致電keen.io分析服務)。這在Spring Boot中如何輕鬆實現?異步調用一些調用並立即從Spring Controller返回

+0

因此在另一個線程中關閉任務。 –

+0

如果控制器返回,它會好嗎? – demig0d

+0

您不會知道未完成的任務是否成功完成。 –

回答

0

一種解決方案是讓一個正在監視隊列的線程運行,以確定何時執行某些工作。當請求完成其即時任務時,它會將信息添加到隊列中,以便監視線程可以理解它需要做一些工作。您可以有一個線程池監視隊列以提高性能。對於基於事件的編程來說,這是一種相當標準的模式,可以讓異步執行操作。

1

我認爲你甚至不需要春天來完成這份工作。您可以使用java.util.concurrent.CompletableFuture#runAsync在另一個線程上運行某種異步。您也可以使用彈簧async support。只需用@Async註釋spring bean方法(在你的情況下返回void)。不要忘記通過使用@EnableAsync註釋配置類來啓用異步支持。

+0

同意Mathias,Spring異步看起來是最好的解決方案。 –