1

私のバッチの1つでは、Webサービスを呼び出して、dbで読み取られたアイテムからデータをエンリッチし、値をチェックしてから、このエンリッチアイテムを別のテーブルに書き込む必要があります。私のWebサービスは、Webサービスへの呼び出し数を最小限に抑えるために、同じ呼び出しで複数の要求をサポートできます。実際、私のWebサービス呼び出しはプロセッサとして定義されています。

<batch:tasklet task-executor="taskExecutor">
  <batch:chunk reader="bookingReader" processor="bookingEnrichWSProcessor"
    writer="bookingCompositeWriter" commit-interval="10" />
</batch:tasklet>

ステップ定義でプロパティcommit-intervalを使用して、1回の呼び出しで複数のアイテムの書き込みをサポートできるのはアイテムライターだけのようです。

私が必要としているのは、リーダーで10個ずつアイテムを読み、別のテーブルで再びそれらをかき混ぜる前に、10個のアイテムでwsを呼び出すことです。

プロセッサクラスでそれを行うことは可能ですか?または、このロジックをライターに移植する必要があります。

私たちの助けをありがとう

4

1 に答える 1

1

リーダー、プロセッサー、ライターを変更する必要があります。リーダーはオブジェクトを出力する必要があります。このオブジェクトは、リスト<何か>である可能性があります。

次に、プロセッサはこのリストをパラメータとして取得し、リスト内のアイテムを使用してWSを呼び出すことができます。

最後に、ライターはオブジェクトのリストも取得します。あなたはそれらを書きます。commit-intervalを削除することを忘れないでください。単一のオブジェクト(10個の要素のリスト)のみを処理するため、commit-intervalを1に設定します(10個の要素を書き込みたい場合)。

于 2012-07-27T07:45:57.020 に答える