Jsr 352 ItemWriterインターフェイスにcheckpointInfoメソッドがあるのはなぜですか?読者と投稿者は、何がコミットされているのかを伝えますか?JSR 352のItemWriterインターフェイスにcheckpointInfoがあるのはなぜですか?どのサンプル実装ですか?
1
A
答えて
0
checkpointInfo()メソッドを使用する必要はありません。 open()のチェックポイント値を無視して、null
(として)を返すように選択するだけで済みます(AbstractItemWriter)。これは一般的です。リーダ/プロセッサがあなたに与えたもの(読者のチェックポイントなどに基づいて)を挿入/更新するだけで、通常、データベースに書き込むための "カーソル"またはインデックスのタイプは必要ありません。
フラットファイルに書き込むときにチェックポイントを使用することがあります。ファイル書き込みは通常トランザクションではないので、何らかの理由でこれを考慮する必要があります。
単純なアプローチの1つは、最も最近のチャンクの終わりにファイルへのバイト#/オフセットをチェックポイントすることです。したがって、レコード501-600をファイルに書き込んだ後にチャンクトランザクションがロールバックした場合、再起動するとレコード501-600を再読み込みして再処理します。レコード501-600がファイル内にすでに存在していても、レコード500の後のバイト位置から(再)開始するので、それらを上書きします。
再起動はあまり頻繁には必要ないので、あなたが再処理するチャンクの価値が1つしかない場合、これはトランザクションリソースが不足しているために簡単で受け入れやすい方法を提供します。
関連する問題
- 1. ワイルドフライのJSR 352 JobRepositoryは、ドメインモードでスケーラブルなバッチ処理ですか?
- 2. jsr 352チェックポイントは、障害/ロールバックシナリオでどのように機能しますか?
- 3. JSR-352バッチレットejb nullPointerException
- 4. JSR 352 1つのパーティションに複数のスレッドがありますか?
- 5. Typescriptで実装されている抽象クラスとインターフェイスが、インターフェイス内のすべてのメソッドを実装する必要があるのはなぜですか?
- 6. JSR 352 - ItemReaderは、DBクエリ
- 7. JSR 303の検証 - フィールドを確認し、特定のインターフェイスである実装
- 8. どのjsr-275ユニット実装を使用すべきですか?
- 9. Redux.js "Dispatch" TypeScriptインターフェイスにテンプレートパラメータがあるのはなぜですか?
- 10. ADFm以外のJSR 227実装はありますか?
- 11. JSR 352:特定のジョブの実行がジョブ内からの再起動かどうかを判断する方法はありますか?
- 12. クローニングと値の割り当てとはどのような違いがありますか(なぜCloneableインターフェイスを実装するのが嫌なのですか)
- 13. なぜAPIと実装があるのですか?
- 14. このインターフェイスがこのようにクラス内で実装されているのはなぜですか?
- 15. どのような奇妙なインターフェイスの実装はそれですか?
- 16. WebSphere Application Serverの従来のバージョン8.0でJSR 352バッチ・ジョブを実行できますか?
- 17. Javaジェネリック:内部インターフェイスが(内部)スーパーインターフェイスから実装できないのはなぜですか?
- 18. クラスの内部イベントが内部インターフェイスのイベントを実装できないのはなぜですか?
- 19. F#でこのインターフェイスの実装がコンパイルされないのはなぜですか?
- 20. インターフェイスは実装とは別のプロジェクトにする必要がありますか?
- 21. ベクターがアソシエーティブを実装するのはなぜですか?
- 22. IAsyncResultインターフェイスの適切な実装は何ですか?
- 23. JavaがgetLocalHostName()の実装を隠すのはなぜですか?
- 24. インターフェイス定義でパラメータ名が必要なのはなぜですか?私は、実装
- 25. FParsecのサンプルが実行されないのはなぜですか?
- 26. F#マップは、変更可能な操作のインターフェイスを実装するのはなぜですか?
- 27. java.util.BitSetがjava.util.Setを実装しないのはなぜですか
- 28. AtomicUsizeがSendを実装しないのはなぜですか?
- 29. IronPythonでインターフェイスを実装するにはどうすればよいですか?
- 30. 抽象クラスのない実装のインターフェイスですか?
まず、** checkpointInfo()**を使用する必要はありません。 ** open()**のチェックポイント値を無視して、** AbstractItemWriter **のインプリメントのように 'null'を返すようにするだけで済みます。これは一般的です。 フラットファイルに書き込むときに、たとえば文字の位置を追跡するときに、チェックポイントを使用することがあります。ファイル書き込みは通常トランザクションではないので、何らかの理由でこれを考慮する必要があります。 SpringBatchには、誰かが指摘するかもしれないサンプルがいくつかあると私は信じている。サンプルがないことに加えて、あなたの質問に答えますか? –
@ScottKurzありがとうScott!はい私の場合、私は出力としてフラットファイルを持っています。フォローアップの質問として、チャンクのサイズが100で、プロセスが#550で失敗した場合、再起動すると、私の読者はチェックポイントを500とするでしょう。しかし私の作家では、私は550としてそれを持っていることを確認する必要があります。私は以前に処理された500-550を再度書きません。これは、私のライターのチェックポイントを使用できるシナリオです。同意しますか? – user8341239
@ScottKurzありがとう!! – user8341239