我想使用Spring Integration按名称读取文件。我知道如何使用带有轮询器的文件适配器。但在这种情况下,我只想按名称读取文件并将其添加到输入通道。
我的应用程序是一个独立的jar,将使用命令行参数调用。其中一个参数是文件名。我也在使用Spring-Boot。只是不知道如何通过读取此文件并将其添加到输入通道来启动处理。我需要自定义网关吗?
由于
答案 0 :(得分:1)
如果我理解正确,您需要使用<context:property-placeholder>
并配置如下:
<file:inbound-channel-adapter
channel="input"
directory="${dir}"
filename-pattern="${pattern}">
<poller fixed-delay="${fixedDelay}" time-unit="SECONDS"/>
</file:inbound-channel-adapter>
所有这些占位符都应该是你的程序args,如下所示:
java myMain --dir=/usr/mydir --patter=myfile.name --fixedDelay=1000
<强>更新强>
然而,不,你不需要<context:property-placeholder>
- Spring Boot会为你做到这一点!
更新2
对不起,您的要求仍然不明确。无论怎么回事:
<int-event:inbound-channel-adapter channel="processFileChannel"
event-types="org.springframework.context.event.ContextRefreshedEvent"
payload-expression="new java.io.File('${filePath}')"/>
其中filePath
再次是命令行参数。来自Spring Boot的属性占位符。
<int-event:inbound-channel-adapter>
负责收听ApplicationEvent
。在这种情况下,当applicationContext准备好做某事时,我们会对ContextRefreshedEvent
- 一个主事件作出反应。