我需要从RDBMS表中读取数据并调用REST API,以便将信息摄取到下游系统中。
下游REST API一次只允许传入一项。
对于这个需求,基于块的spring batch是不是一个更好的选择,因为我没有使用项目写入器一次处理所有项目的能力?
通常,当我们使用JPA ItemWriter这样的项编写器时,项编写器提供了通过数据库批处理操作在单个事务中存储整个数据块的优势。
但是当目标I/O是REST API时,这种优势是不可能实现的。
我可以并行运行块。
在这个需求中使用spring batch是否还有其他优势,而不是从数据库读取和调用API的自定义实现?
发布于 2020-12-14 17:13:52
下行REST API一次只允许传入一项。
您可以将面向块的步骤与chunkSize=1结合使用。这通常不是一个好主意,因为每个项目都会有一个事务(如你所提到的,没有缓冲和批量写入),但它可能对小型/中型数据集起作用/执行得很好。
在这个需求中使用spring batch是否还有其他优势,而不是从数据库读取和调用API的自定义实现?
是的,可重启性。如果你的作业在某些时候失败了,Spring Batch允许你从它停止的地方重新启动它(即不重新处理在上一次运行中已经读取并发布到REST端点的项目)。如果您采用自定义实现路线,则需要自己实现(除非您不关心重新处理所有内容两次)。
https://stackoverflow.com/questions/65276253
复制相似问题