如何在春季批处理(如 JDBCCursorItemReader)中从 Web 服务流式传输记录



用例是从REST Web服务(百万对象列表)读取大量数据,处理它们并将它们写回某个地方。问题是我不想一次性从 Web 服务读取所有数据。我想从 Web 服务读取总结果的子集,一次读取几条记录/对象,这样我就不会冒着从 spring 批处理读取器一次性读取所有数据而导致内存不足的风险。有没有办法做到这一点?Spring Batch 提供了从外部服务(而不是从数据库或平面文件)读取ItemReaderAdapter,但它除了支持委派某些调用外,没有什么特别之处。我想做一些JDBCCursorItemReader读取位置的事情,或者更确切地说是从数据库流式传输而不是一次读取所有内容。

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

https://stackoverflow.com/a/25025898/153940 还提到了Spring Batch如何没有Web服务ItemReader

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

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

相关内容

  • 没有找到相关文章