有一个案例要处理平面文件中超过3M记录的情况,我们想要一次读取3k记录然后将其处理到编写器,有没有更好的方法来处理它?除此之外,我们还有其他一些条件,因为我们的平面文件格式如下:
userid1,transaction1 userid1,transaction2 userid1,transaction3 userid2,transaction1 userid2,transaction3
一个用户可能有很多事务,项目阅读器会将一个用户的事务读取到不同的线程,我们希望将该用户的所有事务都放在同一个线程中,所以我们要动态更改chunksize,所以还有更好的方法吗?答案 0 :(得分:0)
回答你的问题:
是的,您可以使用commit-size
步骤更改scope
,使用#{}语法替换属性或声明自定义completion-policy
。
但我认为您不需要更改commit-size
,而是实现一个自定义阅读器,它构建一个包含单个用户所有事务的域对象。
class UserTransaction {
String transactionId;
}
class UserWithTransaction {
String user;
List<UserTransaction> transactions;
}
class UserWithTransactionReader implements ItemReader<UserWithTransaction> {...}