我正在维护一个使用 Spring Batch 编写的遗留应用程序,需要对其进行调整以永远不会丢失数据。我必须从各种 web 服务中读取(每个步骤一个),然后写入远程数据库。当与 DB 的连接断开时,事情会变得很糟糕,因为从 web 服务读取的所有项目都被丢弃(不能两次读取相同的项目),并且由于无法写入而导致数据丢失。
我需要设置 Spring Batch 以将已读取的数据保留在一个步骤上,以便在下次运行该步骤时重试写入操作。在写操作成功结束之前,相同的步骤不能读取更多的数据。当无法写入时,该步骤应保留读取的数据并将执行传递到下一步,一段时间后,当失败的步骤再次运行时,它不应读取另一项,而是重试失败的写入操作.
批处理应用程序应该在无限循环中运行,并且每个步骤都应该从一个不同的来源收集数据。应该暂时跳过失败的写入操作(保留读取数据),以免延迟其他步骤,但应该在下次调用它们时从写入操作恢复。
除了官方文档,我还在研究各种网络资源,但 Spring Batch 并不是我遇到的最直观的文档。
这可以实现吗?如果是,如何?