【问题标题】:Spring Batch - web service to web service chunkingSpring Batch - Web 服务到 Web 服务分块
【发布时间】:2014-07-29 20:58:04
【问题描述】:
我有一个托管的网络服务,允许批量提取记录。此 Web 服务以起始记录号 (ROWID) 和页面大小(最大 800)作为参数。可能有 50-60k 条记录要从该服务中提取,并调用另一个 Web 服务以块的形式再次发布所有这些数据,而不会在两者之间保留数据。
我如何使用 Spring Batch 通过调用 Web 服务逐页(分块)提取记录,以及如何将相同的记录发布到另一个 Web 服务。
我可以使用 Spring-Integration 批处理来做到这一点,但是对于大量数据,当我们使用 Spring-Batch 来处理大量数据时,我不确定 Spring-Integration 是否是理想的方式。
【问题讨论】:
标签:
spring-batch
spring-integration
【解决方案1】:
Spring Batch 没有网络服务ItemReader。话虽如此,如果您创建一个扩展 AbstractPagingItemReader 的自定义 ItemReader,则应该为您处理分页逻辑本身(您实现处理获取数据页面的 doReadPage() 方法,超类处理跟踪你在哪个页面,等等)。
对于ItemWriter 方面,如果您有想要调用的客户端,您可以使用ItemWriterAdapter。这将调用 java 对象的方法,将列表中的每个项目传递给 ItemWriter#write(List items) 方法。否则,您需要自己编写。
在任何一种情况下,您需要的自定义代码都应该是最少的。