現在、単一のアプリケーションで cron 式を介してスケジュールされているバッチ ジョブが多数あります。これらのジョブをさらに分離して、Spring Cloud タスクに移動したいと考えています。
しかし、ドキュメント [1] を読むと、(ソース) を使用し、(ソース) が(シンク) にa をtriggertask
送信して、最終的に新しいプロセスを起動する必要があるという結論に達しました。TaskLaunchRequest
tasklauncher
つまり、(タスク/バッチが 1 つしかない場合) 新しいプロセスを 1 つトリガーするには、少なくとも次の JVM プロセスを実行する必要があります。
- フローサーバー
- トリガータスク (ソース)
- タスクランチャー (シンク)
OK、フロー サーバーと tasklauncher は今後のタスクで共有されますが、triggertask は 1 つのタスクの cron 定義しか取得できないため、今後のタスク定義のために複製する必要があります。では、各タスクに少なくとも 1 つの「乳母プロセス」が必要ですか?
本当???これはやり過ぎのように聞こえます...私の観点からは、cronスケジューリングはタスク定義のコア機能であると予想していたので、必要なのはフローサーバーだけです。
私はこれを正しく理解していますか、それとも私が見逃しているものはありますか? 春のクラウド環境でこれを行う簡単な方法はありますか? フロー サーバーが必要に応じて新しい JVM を開始するというアイデアは本当に気に入っていますが、これらの追加プロセスはすべて間違ったアプローチだと感じています。
これを CloudFoundry で実行する必要がある場合、たとえばhttp://run.pivotal.ioの場合、これは、月あたり35 ドルの費用がかかる単一のジョブ用の cron スケジューラがあることを意味します (Java BuildPack 4.0 から、512MB しかない JVM プロセスが開始されなくなるため [ 2]) - これは高価な cron 定義です...
[1] https://github.com/spring-cloud/spring-cloud-stream-app-starters/tree/master/triggertask/spring-cloud-starter-stream-source-triggertask [2] https://www .cloudfoundry.org/just-released-java-buildpack-4-0/