【发布时间】:2019-12-05 23:49:55
【问题描述】:
我将 List<Merchantdetails> 传递给 MongoDb 查询。对于每个 MerchantDetails,MongoDb 中有超过 100 万条记录。所以我正在使用 Spring 数据 MongoDb 的跳过和限制。因此,我在一次查询执行中为一位商家获取了 100,000 条记录。
接下来我想在TransactionItemReader中读取这100,000条记录并处理它到ItemProcssor然后这些记录应该被传递给ItemWriter。一旦写入这 100,000 条记录。接下来的 100,000 条记录应该从 MongoDb 中为同一个商家获取。同样,它应该由阅读器读取,由处理器处理,然后由写入器写入。然后在下一次迭代中,下一个商人应该会发生类似的事情。
为了通过一次加载所有事务记录来避免 OutOfMemoryError,我正在使用它。
我正在考虑重复执行该步骤。例如,在 Step 的第一次执行中,获取了 100,000 条记录,并将其提供给阅读器,处理器对其进行处理,然后编写器将其写入。然后再次执行此步骤,并在某些上下文中维护一些跳过计数,该计数应用于跳过已获取的记录,并应获取并处理和写入接下来的 100,000 条记录。
我怎样才能达到这个要求?我是 Spring 批处理的新手。
【问题讨论】:
标签: spring spring-boot spring-batch