英文:
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
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论