在平面文件中,有一种情况可以处理3M条以上的记录,而我们希望一次读取3k条记录,然后再将其处理为写入器,是否有更好的处理方法?除此之外,我们还有其他一些条件,因为我们的平面文件格式如下:
用户ID1,事务1用户ID1,事务2用户ID1,事务3用户ID2,事务1用户ID2,事务3
一个用户可能有很多交易,项目读取器会将一个用户的交易读取到不同的线程中,我们希望将该用户的所有交易都放在同一线程中,因此我们想动态地更改块大小,是否有更好的选择的方式吗?
要回答您的问题:
是的,您可以commit-size
使用scope
#{}语法替换步骤和属性或声明custom来进行更改completion-policy
。
但是我认为您不需要更改,commit-size
而是实现一个自定义阅读器,该阅读器可以为单个用户的所有事务构建一个域对象。
class UserTransaction {
String transactionId;
}
class UserWithTransaction {
String user;
List<UserTransaction> transactions;
}
class UserWithTransactionReader implements ItemReader<UserWithTransaction> {...}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句