为什么 Jsr 352 ItemWriter 接口中有 checkpointInfo 方法。读者和作者如何就提交的内容进行交流
问问题
330 次
1 回答
1
编写者无需使用checkpointInfo()方法。您可以简单地选择忽略open()中的检查点值并返回null
(就像AbstractItemWriter所做的那样)。这很常见。通常,您不需要任何类型的“光标”或索引来写入数据库,因为您只需插入/更新阅读器/处理器给您的任何内容(基于阅读器检查点等)。
写入平面文件时,您可能会使用检查点。由于文件写入通常不是事务性的,因此您需要以某种方式考虑这一点。
一种简单的方法是将字节#/偏移量检查点到文件中,在最新块的末尾。因此,如果在您将记录 501-600 写入文件后块事务回滚,那么在重新启动时,您将重新读取并重新处理记录 501-600。即使文件中已经存在记录 501-600,您现在仍将覆盖它们,因为您将(重新)从记录 500 之后的字节位置开始。
由于不应该经常需要重新启动,并且您只有一个块值得重新处理,因此这可以提供一种简单、可接受的方法来解决缺乏事务资源的问题。
于 2017-08-08T14:24:27.597 回答