入站通道适配器本地目录&信息

时间:2015-10-14 09:08:43

标签: ftp spring-integration adaptor

我们有网络应用程序,并希望使用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}]
  2. 但目录未创建,我检查我在这里有完整的权限。 路径[{applicationDeployPath} \ temp \ inFtp] 不表示可正常访问的目录。

    1. 在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>
      
    2. 提前致谢

1 个答案:

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

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