問題タブ [spring-batch-admin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - spring 統合を使用したリモートパーティショニングにリソースパスが存在しない場合、Spring バッチの MessageChannelPartitionHandler はどのように動作しますか?
春のバッチリモートパーティショニングを使用しています。以下は私の構成です
問題は、マルチリソース パーティショナーで、パターンを割り当ててファイルを検索し、ファイル数に等しいパーティションを作成することです。ただし、ディレクトリは実行時に条件付きで作成されます。
ディレクトリが存在しない場合(入力ファイルが利用できない場合)、このステップを成功させて、次のステップに進みたいと思います。
現在、ジョブはハングアップするだけで、何もしません。ステップが成功したとは見なされず、例外がスローされるため、失敗することさえありません。このステップではアイドル状態になります。
これを処理する方法はありますか? このステップが成功したと見なして、次のステップに進みたいだけです。
更新:
リモートではなくローカルサーバーで実行されるパーティション分割されたステップを作成してテストしたところ、ファイルが存在しない場合、デフォルトでステップが完了としてマークされます。したがって、問題は MultiResourcePartitioner ではなく、パーティション化されたステップを使用して上記の構成のリモート サーバーで実行すると問題が発生します。
ステップ実行メッセージが送信されていないにもかかわらず、応答を待ち続ける集計ロジックだと思いますか?IntegrationMessageHeaderAccessor.SEQUENCE_SIZE ヘッダー属性に依存するデフォルトの SequenceSizeReleaseStrategy が原因で、メッセージがまったくないため、アグリゲーターは SEQUENCE_SIZE にアクセスできませんか?
ステップ実行リクエストがない場合、つまり分割数が 0 の場合、forloop 内に入らないため、メッセージは送信されませんが、for ループの後でも応答の受信を待機します。解決策は何ですか?
java - spring-batch-admin アプリケーションを起動できません
META-INF/spring/jobs/ フォルダーにジョブ xml がある春のバッチ管理アプリケーションがあります。
ジョブの初期化は、以下のエラーで失敗します..
ジョブフォルダーを「ブートストラップ」と言うものに変更すると...アプリケーションは機能します..しかし、ジョブが登録されていません..誰かがそのような問題に遭遇しましたか.
私の理解では、各ジョブには異なるアプリケーションコンテキストがあります..しかし、例外が言っているのは、「ルート」コンテキストでそれをやっているということです
2014 年 7 月 28 日 7:08:07 PM org.apache.catalina.core.ApplicationContext ログ
サンプルのジョブ xml は以下に含まれています
web.xml コンテンツは以下に添付されています
spring - Spring Batch 管理アプリから Spring TaskScheduler を起動できない
春のバッチ管理プロジェクト (1.3.0.RC1) があり、TaskScheduler が cron 式を使用してジョブを実行できるようにしようとしています。
春のバッチ管理用のプロジェクトが 1 つあり、バッチ ジョブを含む別のプロジェクトがあります。管理コンソールから手動で問題なくジョブを実行できます(つまり、問題なくロードされ、機能します)。ただし、ジョブはcronスケジュールで実行されることはありません。
main メソッドを使用して Java クラスを構成し、同じジョブ xml ファイルを使用して Java アプリケーションとして実行すると、ジョブは cron スケジュールで実行されます (つまり、Spring バッチ管理コンソールの外部でジョブを実行します)。これにより、xml 構成に問題がないことも確認されます。
これは機能します: project2 app.java
project2 META-INF/spring/jobs/scheduleTest.xml
ジョブは 30 秒ごとに実行され、テスト出力がコンソールに出力されます。
機能しません: Spring Batch 管理コンソールを実行すると、project2 が project1 にパッケージ化され、job.xml ファイルがクラスパスの一部になり、ジョブがコンソールに登録されて起動可能になります。コンソールから実行でき、正常に動作しますが、スケジュールされた時間に自動的に実行されません。また、手動で実行した後、スケジュールされた時間に実行を開始しません。
ここで私が間違っていることを誰かが見ていますか?任意のポインタをいただければ幸いです。または、SBA で Spring TaskScheduler (クォーツではない) を使用する例を誰かが知っていれば、それも役に立ちます。前もって感謝します。私の推測では、cron 式は、もはや存在しないか、SBA コンソールに認識されていないアプリケーション コンテキストに格納されています。
spring - Spring Batch : ジョブが並行して実行される場合の Spring Batch 管理とコマンド ラインの違い
「分割フロー」を使用してSpringバッチジョブを並行して実行すると、Springバッチ管理とコマンドラインに違いがあることがわかりました。
次のようなジョブフローがあります。
Spring バッチ管理からこれらのジョブを実行すると、「Job1」は「Job2」と「Job4」の両方を起動でき、次に「Job2」は「Job3」を起動できます。
また、「step1」が終了すると、「Job1」が終了します。そして、「Job2」と「Job4」が並行して処理を続けます。
「Job1」は、「Job2」と「Job4」が完了するのを待ちません。
app-context.xml と Spring バッチ管理のジョブ構成は次のとおりです。
Job1.xml
app-context.xml
ただし、コマンド ラインでは、Spring バッチ管理とはいくつかの違いがあります。
app-context.xml とコマンド ラインのジョブ構成は次のとおりです。
Job1.xml
app-context.xml
コマンド ラインからジョブを実行すると、'Job1' は 'Job2' と 'Job4' の両方を起動でき、'Job2' は 'Job3' を起動できます。
問題は
'step1' は終了しましたが、'Job1' のステータスはまだ 'Unknown' です。「Job2」と「Job4」が終了して初めて、ステータスが「Completed」に変わります。
「Job1」は「Job2」と「Job4」が完了するのを待っています。
しかし、Spring バッチ管理では、「Job1」は「Job2」と「Job4」を待ちません。「ジョブ 1」のステータスは、「ステップ 1」が完了するとすぐに「完了」に変わります。
コマンドラインで「Job1」が「Job2」と「Job4」を待つのは望ましくありません。
そうする方法はありますか?
Ps。長い質問で申し訳ありません。助けてくれてありがとう。
java - サーバーのダウンタイム後にSpringバッチジョブを回復する方法
質問は、バッチ ジョブの自動回復戦略に関するものです。いくつかのジョブが実行されていたときに (ステータスが「STARTED」で終了時刻が null の場合)、不明な理由でサーバーがシャットダウンされたと言う。サーバーを再起動したときに、これらすべてのジョブを回復するにはどうすればよいでしょうか。
私の状況では、リクエストを受信して DB キューに保存する独自のジョブ ランチャーを作成しました。次に、独自のジョブ スケジューラを実行して、DB からの要求をポーリングし、ジョブを実行します。これらのジョブのステータスを「STARTED」から「STARTING」に変更して、スケジューラが再び取得できるようにするために、現在の試行には次のものが含まれています。
Spring バッチは「STARTED」ジョブを再起動できず、ジョブが再起動可能であるため、Spring バッチは同じジョブ インスタンスで新しいジョブ実行を作成します。したがって、ジョブを再開できる場合は、元のジョブ ID を変更する必要があります。しかし、ジョブ演算子を使用して「STARTED」ステータスのジョブを停止し、再度再開しようとしましたが、失敗しました。なぜこれが機能しないのですか?
jobOperator.stop(ジョブID); jobOperator.restart(jobId);
また、ジョブ リポジトリを使用して、ジョブの実行ステータスを「STARTED」から「STARTING」に更新することもできませんでした。
jobExecution.setStatus(BatchStatus.STARTED); jobRepository.update(ジョブ実行);
これを達成するための考えをいただければ幸いです。
spring - Spring Batch Admin Webapp がジョブの停止に失敗し、DELETE の代わりに HTTP POST を送信する
spring-batch-admin webapp (バージョン 1.3.0) 内からジョブを停止しようとすると、次のエラー ページが表示されます。
コントローラーは DELETE メソッドがジョブを停止することを期待していますが、停止ボタンから POST がトリガーされます。誰もそれを修正する方法を知っていますか?
編集:さらに調査を行ったところ、春のフォーラムから 3 年前の投稿に出くわしました。おそらくHiddenMethodFilter
web.xml に a がないことが示唆されています。batch-admin をスプリング ブート アプリケーションに統合したため、構成に問題がある可能性があります。ここで必要なのは、上記のフィルターを spring-boot-mvc のデフォルトに追加する方法を理解することだけです。
編集:ボンネットの下で何が起こっているのかを徐々に理解しています。ここで私の問題についてより具体的な質問をしました。
どんな助けでも大歓迎です!