我们有网络应用程序,并希望使用ftp:inbound-channel-adapter从ftp&读取文件创建一条消息&将其发送到频道
但目录未创建,我检查我在这里有完整的权限。 路径[{applicationDeployPath} \ temp \ inFtp] 不表示可正常访问的目录。
在Message中我想根据环境从属性文件中发送更多字段作为有效负载,我该怎么做?
<int-ftp:inbound-channel-adapter id="ftpInboundAdaptor"
channel="ftpInboundChannel"
session-factory="ftpClientFactory"
filename-pattern="*.stagging.dat"
delete-remote-files="false"
remote-directory="/stagging/"
local-directory="#servletContext.getRealPath('')}/temp/inFtp"
auto-create-local-directory="true">
<int:poller fixed-rate="1000"/>
</int-ftp:inbound-channel-adapter>
提前致谢
答案 0 :(得分:0)
local-directory
仅在初始化时评估一次(并在必要时创建),而不是每条消息。
我很惊讶上下文甚至初始化;这个语法看起来很糟糕:
local-directory="#servletContext.getRealPath('')}/temp/inFtp"
如果你的意思是
local-directory="#{servletContext.getRealPath('')}/temp/inFtp"
只有当你有一个名为servletContext
的bean时,它才会起作用。
如果你的意思是
local-directory="#servletContext.getRealPath('')/temp/inFtp"
您需要在评估环境中使用变量servletContext
。
它生成的消息是GenericMessage [payload = {applicationDeployPath} \ temp \ inFtp \ xyz.stagging.dat,headers = {timestamp = 1444812027516,id = 9b5f1581-bfd2-6690-d4ea-e7398e8ecbd6}]
如果它实际生成了该消息,则必须创建该目录。
不清楚你的意思
我想发送更多字段作为有效负载
有效负载是File
。
如果要将有效负载更改为包含文件和其他字段的其他内容,请使用转换器。