2016-04-11 14 views
1

無限ループでDBにクエリを行い、特定の条件でいくつかの操作を実行するヘッドレスアプリケーションを作成したい(特定の値を持つレコードを取得し、 )。スプリングブート - 無限ループサービス

私はスプリングブートをベースに使いたいと思っています(特に、ヘルスチェックを可能にするためのアクチュエータのため)が、今はSpringブートを使用してREST Webサービスを構築しています。

無限ループアプリケーションを構築する際に従うべきベストプラクティスまたはパターンはありますか?誰もがSpring Bootに基づいてビルドしようとしましたが、このケースのアーキテクチャーを私と共有することはできますか?

よろしくお願いいたします。

答えて

4

私が使用しているのは、メッセージブローカーと消費者が、春の起動アプリケーションで仕事をすることです。

+0

あなたつまり、Spring Integrationを使用してデータベースをポーリングするチャネルを作成し、消費者が見つかった行のロジックを実行していることが判明した場合です。 –

+0

あなたのヒントをありがとう。私はついにSpring Integration + Spring Bootを使用しました。 JDBC Inbound Channel Adapterを使用してデータベースをプールし、自分のServiceActivatorを作成して見つかった行に反応させました。少量のコードで魅力的に動作します。 –

7

自分で無限ループを実装しないでください。フレームワークは、そのtask execution機能を使用してそれを処理してみましょう:

@Service 
public class RecordChecker{ 

    //Executes each 500 ms 
    @Scheduled(fixedRate=500) 
    public void checkRecords() { 
     //Check states and send mails 
    } 
} 

は、アプリケーションのためのスケジューリングを可能にすることを忘れないでください:

@SpringBootApplication 
@EnableScheduling 
public class Application { 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(Application.class); 
    } 
} 

も参照してください: