【问题标题】:spring integration reading many files弹簧集成读取许多文件
【发布时间】:2018-09-11 18:16:40
【问题描述】:
我们需要解析大量传入文件(到一个目录中)并对其进行处理,然后将每个文件的结果放到 AWS kinesis 中。
文件的频率可以是每天 60,000 个,文件可以每 15 秒到达一次。每个文件可能包含大约 1000 个条目。
弹簧集成可以处理这种负载吗?
处理此类卷会不会有任何问题?
当文件进入入站通道适配器时,我们可以为每个文件执行服务激活器吗?
我相信我们需要在带有轮询器的通道上使用任务执行器?有什么例子吗?
任务执行器会以多线程方式调用服务激活器吗?
任何指针都会有所帮助。任何代码示例的链接都很好。
【问题讨论】:
标签:
spring
spring-boot
spring-integration
【解决方案1】:
这不是人们在 SO 上提出的那种问题 - 一个线程中的问题过于广泛和过多。我假设即使我回答了所有问题,你也会问更多,所以不适合问答聊天。无论如何:
是的,Spring Integration 可以处理这个问题。您可以使用简单的FileReadingMessageSource 定期轮询目录。
可以将每个文件(出站消息payload)馈送到FileSplitter 以逐行解析它。
在拆分器之后,您确实可以使用ExecutorChannel 来并行处理这些行。
Service Activator 可以在多线程环境中调用,只要它是线程安全的。
最后您可以使用KinesisMessageHandler 将记录发送到AWS Kinesis。是的,这个也可以从不同的线程中使用。
您可以在 Spring Integration Reference Manual 中找到所有信息。一些Samples 也可能对您有所帮助。还有 Spring Integration AWS Extension 为您服务。