在spring集成中,我想从不同的源目录(每个配置的接口具有不同的源目录)中轮询文件,这些文件被配置为yml文件中的sourcePath(动态),如下所示。用户可以添加N个接口。
interfaces:
-
sourceType: NFS
sourcePath: /Interface-1/Inbound/text
target: Interface-1
targetType: S3
targetPath: test-bucket-1
-
sourceType: NFS
sourcePath: /Interface-2/Inbound/text
target: Interface-2
targetType: S3
targetPath: test-bucket-2
是否可以使用单个入站适配器(使用原子引用)来轮询来自不同源文件夹的文件,或者需要多个入站适配器?
当前,应用程序从基本目录中轮询文件。
<file:inbound-channel-adapter id="filesInboundChannel"
directory="file:${base.path}" auto-startup="false" scanner="scanner" auto-create-directory="true">
<integration:poller id="poller" max-messages-per-poll="${max.messages.per.poll}" fixed-rate="${message.read.frequency}" task-executor="pollingExecutor">
<integration:transactional transaction-manager="transactionManager" />
</integration:poller>
</file:inbound-channel-adapter>
有人可以对此提供建议吗,或者还有其他方法也可以实现相同的目标
答案 0 :(得分:1)
是的,您可以为此任务使用一个<file:inbound-channel-adapter>
。要使其在要扫描的目录列表上旋转,您需要为该适配器的AbstractMessageSourceAdvice
配置一个<poller>
实现,以在afterReceive(boolean messageReceived, MessageSource<?> source)
得到时更改目录false
用于接收操作。因此,通过这种方式,下一次民意调查将已经获得一个新目录进行扫描。
作为示例,您可以查看最近引入的RotatingServerAdvice
:https://github.com/spring-projects/spring-integration/blob/master/spring-integration-file/src/main/java/org/springframework/integration/file/remote/aop/RotatingServerAdvice.java