java - Spring Batch 是如何分块读取的?它是否保持光标?
问题描述
我想了解分块读取数据的底层机制。我实际上想手动复制该代码。我们从中读取的数据库不支持 SQL 查询,这些查询可以限制读取的记录数。所以我想看看我是否可以以某种方式将读取限制为特定大小(就像弹簧批处理如何将一次读取限制为特定块大小一样)。
谢谢!
解决方案
Spring Batch 调用读取器,直到达到配置的块大小或数据源耗尽(即读取器返回null
)。更具体地说,它是ChunkProvider
调用阅读器提供一大块项目并将其交给ChunkProcessor
. 您可以在ChunkOrientedTasklet类中找到代码的相关部分。
chunkOrientedProcessing部分中的伪代码示例解释了块处理。
推荐阅读
- python - 使用 tf 函数而不是 for 循环 tensorflow 来获取切片/掩码
- r - 为什么“逻辑”参数为向量和小标题返回不同的输出
- c++ - clang++:错误:链接器命令在 ffmpeg 的 cpp 中失败,退出代码为 1(使用 -v 查看调用)
- spring-boot - 将 Spring Boot API 连接到 JSP 接口
- php - PHP 只能比较数字,不能比较字符串
- javascript - 如何将每个数组 obj 作为带引号的字符串获取?
- kubernetes - Kubernetes 作业因临时存储问题而失败
- javascript - window.onload 和 window.beforeunload 在尝试更新和显示变量时不起作用
- list - 如何将列表的RDD列表转换为pyspark中的一个列表
- jmeter - 如何在 jmeter 的 beanshell 中创建响应断言