如果我必须处理 API 个服务而不是 CSV 作业,是否需要 spring 个批处理?
Do I need spring batch if I have to process API services instead of CSV jobs?
我正在编写一个应用程序,其主要 objective 是 从服务提供商 (XXX) 提取数据,转换并通过 HTTP REST 将其推送到另一个服务提供商 (YYY) .
我可以用一个简单的 for 循环来做到这一点,我将最后检索到的项目创建日期存储在一个单独的 table 中。
因此,我可以在需要时继续从上次转换的项目中提取项目,并且我将维护单独的 table 来保存失败的记录,并通过 CRON 定期重试这些失败的记录。
我还需要使用 SPRING Batch.
据我所知,它有助于使用 Reader、处理器和编写器对代码进行模块化。
我错过了什么吗?我可以使用 spring 批处理并从 A 点到 B 点通过 HTTP 服务同步数据吗?
您仍然可以使用 Spring 批处理,原因有很多。这是一个非详尽列表,其中包含与每个功能的用例相关的示例:
- Declarative I/O: Spring Batch 提供了丰富的 readers/writers 库,您不必自己编写 I/O 代码 (open/close资源、读取原始数据、迭代项目等)。 Spring 批处理基于 Spring 框架,您可以利用所有 Spring 框架功能,如 AOP、事务管理等。在您的情况下,您可以利用
RestTemplate
到 GET/POST 资源
- 容错:retry/skip 机制允许您在批处理作业中引入一些弹性。 例如,在您的情况下,如果休息服务暂时关闭,请重试处理项目。
- 面向块的处理:这种模型非常适合海量数据。数据以块的形式读取,以避免读取内存中的所有数据集。 在您的情况下,您可以每页调用一次以从您的休息端点获取数据
- 事务管理:Spring Batch 为您管理事务,因此您不会在发生错误时丢失数据。 在您的情况下,您提到将项目保存到数据库 table、Spring Batch 可以为您管理事务 commit/rollback
我正在编写一个应用程序,其主要 objective 是 从服务提供商 (XXX) 提取数据,转换并通过 HTTP REST 将其推送到另一个服务提供商 (YYY) .
我可以用一个简单的 for 循环来做到这一点,我将最后检索到的项目创建日期存储在一个单独的 table 中。 因此,我可以在需要时继续从上次转换的项目中提取项目,并且我将维护单独的 table 来保存失败的记录,并通过 CRON 定期重试这些失败的记录。
我还需要使用 SPRING Batch. 据我所知,它有助于使用 Reader、处理器和编写器对代码进行模块化。
我错过了什么吗?我可以使用 spring 批处理并从 A 点到 B 点通过 HTTP 服务同步数据吗?
您仍然可以使用 Spring 批处理,原因有很多。这是一个非详尽列表,其中包含与每个功能的用例相关的示例:
- Declarative I/O: Spring Batch 提供了丰富的 readers/writers 库,您不必自己编写 I/O 代码 (open/close资源、读取原始数据、迭代项目等)。 Spring 批处理基于 Spring 框架,您可以利用所有 Spring 框架功能,如 AOP、事务管理等。在您的情况下,您可以利用
RestTemplate
到 GET/POST 资源 - 容错:retry/skip 机制允许您在批处理作业中引入一些弹性。 例如,在您的情况下,如果休息服务暂时关闭,请重试处理项目。
- 面向块的处理:这种模型非常适合海量数据。数据以块的形式读取,以避免读取内存中的所有数据集。 在您的情况下,您可以每页调用一次以从您的休息端点获取数据
- 事务管理:Spring Batch 为您管理事务,因此您不会在发生错误时丢失数据。 在您的情况下,您提到将项目保存到数据库 table、Spring Batch 可以为您管理事务 commit/rollback