問題タブ [itemprocessor]

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.

0 投票する
1 に答える
450 参照

spring-batch - Spring バッチの概念で必要な明確化

私は Spring バッチを初めて使用し、Spring バッチを使用してビジネス ユース ケースを実装する際に問題が発生しています。

基本的に、データベース、つまりニュースレターの購読者のリストからデータを読み取っています。次に、各サブスクライバーに電子メールを送信するだけでなく、データベースにデータを挿入して、電子メールがどのサブスクライバーに送信されたかを知る必要があります。

process メソッドが MimeMessage を返し、サブスクライバーを引数として受け取る ItemProcessor 実装を使用します。このプロセッサに関連付けられているライターのタイプは:org.springframework.batch.item.mail.javamail.MimeMessageItemWriterです。

問題は、サブスクライバーのリストを引数として取り、入力として持っているのは上記の ItemProcessor からの MimeMessage だけであるデータベース挿入 (おそらく CompositeItemWriter を使用) 用に別のライターが必要なことです。

誰でも助けてもらえますか?

0 投票する
5 に答える
37875 参照

spring - Spring Batch: 1 つのリーダー、複数のプロセッサおよびライター

Spring バッチでは、ItemReader によって読み取られたアイテムを 2 つの異なるプロセッサとライターに渡す必要があります。私が達成しようとしているのは...

これが必要なのは、ItemWriter#1 によって書き込まれた項目は、ItemWriter#2 によって書き込まれた項目とはまったく異なる方法で処理する必要があるためです。さらに、ItemReader はデータベースから項目を読み取りますが、実行するクエリは計算コストが非常に高いため、同じクエリを 2 回実行するのは破棄する必要があります。

そのような設定を達成する方法についてのヒントはありますか? または、少なくとも、論理的に同等のセットアップですか?

0 投票する
4 に答える
24340 参照

java - 春のバッチ ItemProcessor から複数のアイテムを返す

私は春のバッチジョブを書いていますが、私のステップの1つに、プロセッサ用の次のコードがあります:

Account上記のコードは機能しますが、 1つ以上のコードを使用できるエッジ ケースがいくつかあることがわかりましたNewsletterSubscriberAccountそのため、状態チェックを削除して、アイテム ライターに複数渡す必要があります。

私が見つけた1つの解決策は、両方を変更し、ItemProcessor代わりにタイプItemWriterを処理することですが、これには2つの欠点があります。List<Account>Account

  • ライターのネストされたリストのために、コードとテストはより醜く、作成と保守が困難です
  • 最も重要なのは、複数のAccountオブジェクトが同じトランザクションで書き込まれる可能性があることです。ライターに指定されたリストには複数のアカウントが含まれる可能性があり、これを避けたいからです。

おそらくリスナーを使用するか、スプリングバッチで使用される内部コンポーネントを置き換えて、プロセッサのリストを回避する方法はありますか?

アップデート

この問題について、 Spring Jira でイシューをオープンしました。

拡張ポイントとしてマークされているisCompleteおよびgetAdjustedOutputsメソッドを調べて、目標を達成するために何らかの方法でそれらを使用できるかどうかを確認しています。FaultTolerantChunkProcessorSimpleChunkProcessor

どんなヒントでも大歓迎です。

0 投票する
0 に答える
142 参照

java - バッチジョブのSpringバッチプロセッサで新しいアイテム/ CSV行を生成する

概要 : バッチ エクスポート中に生成された行を含む CSV ファイルをエクスポートする必要があります。

DB からデータを取得するための JdbcItemreader が既にあります。プロセッサは、OutputData を必要な形式にフォーマットします。そして、CSVファイルを書き込む基本的なFlatFileItemWriterがあります

これは私のエクスポートされた CSV-Lines がどのように見えるかです:

これらの行が見苦しいことは知っていますが、それは他の CSV インポーターからの要件です。ここで、「合計行」を計算して、同じ ID を持つ 2 つの行のに追加する必要があります。計算された「合計線」は次のようになります。

したがって、最終的な出力は次のようになります。

ここに私の質問があります:

  • FlatFileItemWriter を介して CSV ファイルの他の行の間に行を追加することは可能ですか? または、ファイルを書き込む前に合計行を生成する必要がありますか?
  • ItemWriter / Processor の完全なデータチャンクにアクセスすることは何とか可能ですか? ファイルに書き込む前に新しい行をチャンクに追加できるようにするには?