日期未解析为骆驼简单表达式

时间:2020-01-29 18:56:45

标签: apache-camel

骆驼的新手。我正在尝试使当前的DateTime成为文件名的一部分。关键位在这里:

{
"type": "FeatureCollection",
"features": [{
    "type": "Feature",
    "properties": {
        "level": 0,
        "id": 1
    },
    "geometry": {
        "type": "Polygon",
        "coordinates": [[
            [-75.360297, 6.071571],
            [-76.005083, 6.063846],
            [-76.051694, 6.511708],
            [-75.298149, 6.573451]
        ]]
    }
}]
}

.to(s"sftp://$sftpStr/&fileName=MyFile_${date:now:yyyyMMdd}.csv&noop=true") 包含相关路径。但是Date表达式在编译时引发错误。我敢肯定这是我做的简单而愚蠢的事情,但是我不清楚为什么这行不通。

有一件我不了解的相关事情,这可能有助于弄清我的困惑。我尝试过:

sftpStr

这引发了错误。但是我拿走了字符串中的.log(LoggingLevel.INFO, LOG.getName, s"Route Started! Time = ${date:now:dd-MM-yyyy HH:mm:ss z}") 标签,它工作正常。我以为s只是发出信号以读取后面的字符串作为一个简单的表达式。

重申一下,基本上只是想捕获文件名中的当前日期/时间(而且我不能仅仅使用s或其他任何令人讨厌的原因来创建变量)。我加入了一些有关日志的内容,希望能将我的困惑与背景联系起来。

谢谢!

1 个答案:

答案 0 :(得分:1)

在您写的问题陈述中,我相信是$sftpStr。我认为这无法解决。

  • 如果$sftpStr是属性,则应使用{{$sftpStr}}
  • 如果它是标头,则应使用${header.sftpStr}

我建议对文件夹和文件名都使用标头。像这样:

from(...)
  ...
  .setHeader("folder", constant("the value"))
  .setHeader("CamelFileName", simple("${date:now:yyyyMMdd}"))
  .to("sftp:username:password@{{ftp.server}}/${header.folder}&noop=true");

上面的ftp.server是保存SFTP主机的属性。

希望会有所帮助。