如何在JDBCCursorItemReader等弹出批处理中从Web服务流式传输记录

时间:2015-05-14 02:56:03

标签: stream spring-batch batch-processing chunking

用例是从REST Web服务读取大量数据,列出百万个对象,处理它们并将它们写回某处。问题是我不想一次性从Web服务中读取所有数据。我想从Web服务中读取总结果的一部分,一次读取一些记录/对象,这样我就不会因为弹簧批次一次性读取所有数据而面临内存不足的风险读者。有没有办法做到这一点? Spring Batch提供ItemReaderAdapter用于从外部服务读取(而不是从数据库或平面文件),但除了支持委派一些调用之外,它没有什么特别之处。我想做JDBCCursorItemReader所读取的内容,或者更确切地说来自db的流,而不是一次性读取所有内容。

http://forum.spring.io/forum/spring-projects/batch/73040-default-webservice-reader-implementation在这里,他们谈论缺乏网络服务的读者。

https://stackoverflow.com/a/25025898/153940还提到Spring Batch没有网络服务ItemReader

1 个答案:

答案 0 :(得分:0)

您是正确的,因为Spring Batch不提供Web服务ItemReader实现。原因是" web服务"的定义。有点太模糊,无法使读者标准化。

话虽如此,您可以通过扩展AbstractPagingItemReaderhttp://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/database/AbstractPagingItemReader.html)并在那里添加适合您的网络服务的逻辑来轻松实现自己的工作。