通过API(SOAP / REST)批量导入

时间:2019-03-01 15:21:23

标签: spring-batch etl bulk-load

我有一个应用程序,需要从客户端系统将数据导入到我的应用程序中。这些数据需要以我的应用程序要求的格式进行转换。另外,数据需要定期更新。

所以我在这里谈论两件事:

  • 初始批量上传
  • 当客户端系统中的数据更改时更新此数据。

我对此进行了研究,人们建议可以通过文件上传初始数据。

还有其他选择吗?

假设我需要将产品和用户(大约1k)导入到我的系统中。

所以我的问题是:

  1. 我应该通过某些文件批量上传吗?还是可以使用SOAP / REST API导入大量记录?
  2. 在这种情况下我可以使用Spring-batch作为ETL吗?

我现在看到的解决方案是在服务器上提供API,客户端系统将调用该API,然后将这些数据移交给Job(使用spring-batch)以进行进一步处理。

我正在使用Spring框架和MySQL DB。

预先感谢

2 个答案:

答案 0 :(得分:0)

初始导入可以通过Spring Batch作业完成。 Spring Batch的面向块的处理模型在这种ETL用例中大放异彩,尤其是当您拥有大量数据集时。

  

我现在看到的解决方案是在服务器上提供API,该API将由客户端系统调用

对于增量,我不确定您是否需要公开API。我认为这是另一个系统,应该提供这样的API,以在给定的日期/时间范围内提供数据更改。然后,您的系统可以定期调用此API来获取增量并进行自我更新。这也可以通过计划的批处理作业来完成(或者,如果增量足够小以至于可以在Web请求中进行处理,则不能这样做)。

希望这会有所帮助。

答案 1 :(得分:0)

您可以使用SOAP / REST API或从文件读取。我做过两种方式。 1k是非常小的数字。我已经使用Rest API完成了10k的任务。大多数组织在API响应大小方面都有网络限制。确保您的Rest / SOAP响应大小在组织的限制范围内。如果超过,则最好使用Spring批处理通过文件加载。

在ItemReader中,创建一个带有@PostConstruct注释的名为init()的方法。并调用Rest / SOAP端点或从文件读取以获取数据。您的阅读器应该一次返回一条记录/行,因为ItemProcessor应该解析阅读器发送的行/记录并进行进一步处理。

我希望这会有所帮助。