2016-08-08 13 views
0

私はSpring Bootを使用していますが、データベースにオブジェクトを永続させ、さらに3〜4の他のサービスを呼び出すなど、しかし、私はデータベース呼び出しが永続化された直後に応答を返し、別のスレッドで他のサービスを非同期に呼び出したいと思いますか?他の3-4サービスへの呼び出しは最終的に一貫性があります(たとえば、keen.io分析サービスへの呼び出しなど)。これはSpringブートでどのように簡単に実行できますか?いくつかの呼び出しを非同期的に行い、Spring Controllerからすぐに戻ります。

+0

他のスレッドでタスクを起動しないようにします。 –

+0

コントローラが復帰すればいいでしょうか? – demig0d

+0

未完了のタスクが正常に完了するかどうかは分かりません。 –

答えて

0

解決策の1つは、キューを監視してスレッドを実行して、何らかの作業をいつ実行するかを判断することです。要求が即時タスクを完了すると、キューに情報が追加され、監視スレッドは何らかの作業を行う必要があることを理解できます。パフォーマンスを向上させるためにキューを監視するスレッドのプールを持つことができます。これは、アクションを非同期で実行する機能を提供する、イベントベースのプログラミングのためのかなり標準的なパターンです。

1

私はこの仕事に春は必要ないと思います。 java.util.concurrent.CompletableFuture#runAsyncを使用して、別のスレッドでsth asyncを実行できます。

また、スプリングasync supportを使用することもできます。 @Asyncで春の豆のメソッド(あなたの場合はvoidを返す)に注釈を付けるだけです。 @EnableAsyncという設定クラスに注釈を付けることで、非同期サポートを有効にすることを忘れないでください。

+0

Mathiasと合意、Spring Asyncが最適なソリューションを探します。 –

関連する問題