Spring 集成 - 按名称读取文件
Spring Integration - Read file by name
我想使用 Spring 集成按名称读取文件。我知道如何将文件适配器与轮询器一起使用。但在这种情况下,我只想按名称读取文件并将其添加到输入通道。
我的应用程序是一个独立的 jar,将使用命令行参数调用。参数之一将是文件名。我也在使用 Spring-Boot。只是不知道如何通过读取此文件并将其添加到输入通道来启动处理。我需要自定义网关吗?
谢谢
如果我理解正确,你需要使用 <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>
所有这些占位符都应该是您的程序参数,如下所示:
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
。在这种情况下,我们对 ContextRefreshedEvent
作出反应 - 当您的 applicationContext 准备好做某事时的主要事件。
我想使用 Spring 集成按名称读取文件。我知道如何将文件适配器与轮询器一起使用。但在这种情况下,我只想按名称读取文件并将其添加到输入通道。
我的应用程序是一个独立的 jar,将使用命令行参数调用。参数之一将是文件名。我也在使用 Spring-Boot。只是不知道如何通过读取此文件并将其添加到输入通道来启动处理。我需要自定义网关吗?
谢谢
如果我理解正确,你需要使用 <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>
所有这些占位符都应该是您的程序参数,如下所示:
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
。在这种情况下,我们对 ContextRefreshedEvent
作出反应 - 当您的 applicationContext 准备好做某事时的主要事件。