入站通道适配器本地目录和消息

inbound-channel-adapter local-directory & message

我们有 Web 应用程序,想使用 ftp:inbound-channel-adapter 从 ftp 读取文件并创建消息并将其发送到频道

  1. local-directory 设置为 local-directory="#servletContext.getRealPath('')}/temp/inFtp" 它给出 生成的消息是 GenericMessage [payload={applicationDeployPath}\temp\inFtp\xyz.stagging.dat, headers={timestamp=1444812027516, id=9b5f1581-bfd2-6690-d4ea-e7398e8ecbd6}]

但是没有创建目录,我检查过我在这里有完全权限。 路径 [{applicationDeployPath}\temp\inFtp] 不表示可正确访问的目录。

  1. 在消息中,我想根据环境从 属性 文件中发送更多字段作为有效负载,我该怎么做?

    <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>
    

提前致谢

local-directory 仅在初始化时评估一次(并在必要时创建),而不是针对每条消息。

我很惊讶上下文甚至初始化了;这个语法看起来很糟糕:

local-directory="#servletContext.getRealPath('')}/temp/inFtp"

如果你的意思是

local-directory="#{servletContext.getRealPath('')}/temp/inFtp"

它只有在你有一些名为 servletContext 的 bean 时才有效。

如果你的意思是

local-directory="#servletContext.getRealPath('')/temp/inFtp"

您需要在评估上下文中使用一个变量 servletContext

it gives Message generated is GenericMessage [payload={applicationDeployPath}\temp\inFtp\xyz.stagging.dat, headers={timestamp=1444812027516, id=9b5f1581-bfd2-6690-d4ea-e7398e8ecbd6}]

如果它确实生成了该消息,它一定已经创建了该目录。

不清楚你的意思

I want to send some more fields as payload

有效负载是 File.

如果您想将负载更改为包含文件和其他字段的其他内容,请使用转换器。