英文:
Spring integration: process files line by line persisting read state
问题
我想使用Spring Integration文件逐行处理文件,似乎可以使用FileReadingMessageSource和FileSplitter来实现。
然而,当Spring Integration应用程序在处理文件时崩溃或重新启动时,我不希望行重新被处理(至少不要太多),也不希望丢失行。
在Spring Integration中,是否有一种方法可以保持文件的读取状态,以便在上次中断的地方重新启动处理?是否有人有这种场景的示例?
英文:
I want to process files line by line using Spring integration file, which seems to be possible using FileReadingMessageSource and FileSplitter.
However, when the Spring integration application crashes or is restarted while processing a file, I do not want lines to get re-processed (at least not too many) or to get lost.
Is there a way to keep the read state of a file in Spring integration, so that processing is restarted where it left off? Does anyone has an example of such a scenario?
答案1
得分: 1
在FileSplitter中无法保持读取状态,但我可以建议您查看幂等接收器模式。因此,处理来自文件的行的端点可以跳过已处理过的行。
在文档中查看更多信息:https://docs.spring.io/spring-integration/docs/5.3.0.M4/reference/html/messaging-endpoints.html#idempotent-receiver
英文:
There is no way to keep a read state in the FileSplitter, however I can suggest you to take a look into the Idempotent Receiver pattern. So, an endpoint which processes the line from the file could skip those already processed.
See more info in the Docs:https://docs.spring.io/spring-integration/docs/5.3.0.M4/reference/html/messaging-endpoints.html#idempotent-receiver
专注分享java语言的经验与见解,让所有开发者获益!

评论