2017-08-08 6 views
0

dbに接続せずにSpring起動アプリケーションを起動しようとしています。 this questionのアプローチは非常に有望であると思われますが、私のアプリケーションは起動時にいくつかのdbメンテナンス(すべてのインデックスが存在することを確認するなど)を行うCommandLineRunnerを実行します。タイムアウトが発生しないように、私はCommandLineRunnerメソッドを(Springの@Asyncを使用して)非同期に実行しようとしましたが、成功するまでDB接続を取得しようとしましたが、まだタイムアウト例外が発生しています。私はCommandLineRunnerメソッドの非同期実行が機能しないと仮定します。Springの起動時にDB内でタスクasyncを実行します。

これに関するヒントはありますか?

答えて

0

CommandLineRunner内にある機能をすべてTaskSchedulerでリファクタリングし、将来タイムアウトを避けるために十分な時間をスケジューリングできます。失敗した場合、メンテナンスが期待どおりに実行されていない場合、スプリングブートアプリケーションを正常にシャットダウンすることができます。

https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html#scheduling-task-scheduler

最も簡単な方法は、Runnableをのみ日付を取るのスケジュール 'という名前の一つです。 これは、指定された時刻の後にタスクを1回実行させます。他のすべての方法は、タスクを繰り返し実行するようにスケジューリングすることができます。固定レートと固定遅延の方法は単純で定期的に実行する方法ですが、トリガーを受け入れる方法ははるかに柔軟です。

関連する問題