为什么在Jsr 352 checkpointInfo接口中有一个ItemWriter方法。读者和作家如何就所承诺的内容进行交流
发布于 2017-08-08 14:24:27
作者没有必要使用checkpointInfo()方法。您只需选择忽略open()中的检查点值,然后返回null (就像那样)。这很常见。通常,您不需要任何类型的“游标”或索引来写入数据库,因为您只需插入/更新阅读器/处理器提供给您的任何内容(基于读取器检查点等等)。
您可能在写入平面文件时使用检查点。由于文件写入通常不是事务性的,因此您需要对此做出某种解释。
一种简单的方法是在最近一块的末尾将字节#/偏移量检查点到文件中。因此,如果块事务在将记录501-600写入文件后回滚,那么在重新启动时,您将重新读取和重新处理记录501-600。尽管记录501-600已经存在于文件中,但您现在将覆盖它们,因为您将(重新)从记录500之后的字节位置开始。
由于重新启动不应该太频繁,而且您只有一个块的值来重新处理,这可以提供一种简单、可接受的方法来解决缺乏事务资源的问题。
https://stackoverflow.com/questions/45492045
复制相似问题