基于 Spring Batch block 的方法在 Item Writer 中调用 REST API

标签 spring spring-batch

我需要从 RDBMS 表中读取数据并调用 REST API,以便将信息提取到下游系统中。

下游 REST API 一次仅允许传递一个项目。

基于 block 的 Spring Batch 是否是满足此要求的更好选择,因为我没有使用项目编写器一次处理所有项目的功能?

通常,当我们使用像 JPA ItemWriter 这样的 Item writer 时,item writer 具有通过数据库批处理操作将整个数据 block 存储在单个事务中的优势。

但是当目标 I/O 是 REST API 时,这种优势就不可能实现。

我可以并行运行 block 。

在这个需求中使用 Spring Batch 比从数据库读取并调用 API 的自定义实现还有其他优势吗?

最佳答案

Downstream REST API only allows a single item to be passed at a time.

您可能可以使用带有 chunkSize=1 的面向 block 的步骤。这通常不是一个好主意,因为每个项目都会有一个事务(没有您提到的缓冲和批量写入),但对于小型/中型数据集来说它可能工作/性能良好。

Would there still be other advantages of using spring batch in this requirement rather than a custom implementation of reading from database and invoking API?

是的,可重新启动。如果您的作业在某个时刻失败,Spring Batch 允许您从中断处重新启动它(即,不要重新处理在上次运行中已读取并发布到 REST 端点的项目)。如果您采用自定义实现路线,则需要自己实现(除非您不关心将所有内容重新处理两次)。

关于基于 Spring Batch block 的方法在 Item Writer 中调用 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65276253/

相关文章:

Spring 批处理 - ORA-08177

hibernate - JPA2 中分离对象的问题

java - Spring集成中服务抛出的异常处理

java - @Transactional 问题以及如何与@Service 一起使用

java - Spring Batch 2.2.7 中的 StepExecutionListener 缺少 onErrorInStep() 方法

java - Spring Boot 如何运行批处理作业

java - 即使存在也无法找到具有 id 的实体

spring - 使用 Autowiring 的 spring 服务测试自定义验证器

java - 在Spring Batch中根据标题读取Excel文件列

java - PostgreSQL 函数的 Spring Batch ItemWriter 错误