2017-10-10 28 views
0

別のシステムからトリガーされた、毎週バネ・バッチで実行されているジョブがあります。時には、同じ日に実行されるジョブのインスタンスがいくつかあります。それぞれが他のシステムからトリガーされました。 すべてのジョブは約1時間実行されます。実行するジョブインスタンスが複数ある場合は、データに問題が発生します。バッチ・バッチ内のキュー・ジョブ・インスタンス

実行中のジョブ・インスタンスがない場合は、次のようにこのステップを最適化します。ジョブ・インスタンスがすでにキューに入れられているジョブ・インスタンスがある場合は、新規インスタンスを開始します。 各ジョブ・インスタンスは、次のインスタンスがトリガーされる前にCOMPLETEDでなければなりません。 1つが失敗すれば、次のものは待たなければならない。 ジョブパラメータは、インクリメンタとタイムスタンプです。

私はグーグルではありますが、役に立つと思われるものは何も見つかりません。 これは、春のバッチでジョブインスタンスをキューに入れるのが賢明なのだろうか? もしそうなら、どうしたらいいですか?私はSpringの統合と仕事の立ち上げ - ゲートウェイを見てきましたが、実際に実装する方法はわかりません。どのように動作するのか分かりません。私はこれらのことについて読むことを試みるが、私はまだ理解していない。

私はバネバッチのバージョンが間違っていますか?多分私は何かを見逃しているでしょうか?

私の詳細情報が必要な場合はお知らせください。 ありがとうございました!

春コアと豆3.0.5、春バッチ統合1.2.2、春統合コア3.0.5、春統合ファイル、-http、-sftp、-streamを使用しています。 2.0.3

+0

これを確認してくださいhttps://stackoverflow.com/questions/37405659/can-spring-provide-concept-like-job-queue –

答えて

0

Springバッチと一緒にアプリケーションにSpring Integrationを組み込むとよいのであれば、実際にはjob-launching-gateway機能を活用することをお勧めします。

右のタスクをキューに入れることができます。本質的にはQueueChannelです。

このチャネルをポーリングするエンドポイントは、max-message-per-poll="1"で構成して、一度に1つのタスクのみを内部キューからポーリングできます。

ただ1つのメッセージをポーリングした場合は、job-launching-gatewayに送信し、同時にコントロールバスコンポーネントに送信すると、そのポーリングエンドポイントを停止するコマンドは、現在のジョブが終了するまでキュー内の他のメッセージに触れません。ジョブがCOMPLETEDの場合、1つ以上の制御メッセージを送信してポーリングエンドポイントを開始できます。

スプリング統合モジュール3.0.5、スプリング統合ファイル、-http、-sftp、-stream 3.0.5など、すべてのSpring Integrationモジュールを同じバージョンで使用してください。 。

関連する問題