如何动态地将日期添加到驼峰路线xml'到uri'

时间:2016-06-14 14:29:20

标签: xml date apache-camel uri

我正在添加新的驼峰路线xml。我无法将日期值输入到URI。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<route xmlns="http://www.myCompany.com/123/api/route/1.0">
//...some lines
....

<from>
<uri>...</uri>
  ....
.....
</from>
<to>
  <uri>file://C:/mywork/${date:now:yyyy}-${date:now:MM}-${date:now:dd}</uri>
</to>
</route>

当我使用上面这个时获取CaughtExceptionType:groovy.lang.MissingPropertyException,CaughtExceptionMessage:没有这样的属性:yyyy for class:script1465913927580309309860,StackTrace:groovy.lang.MissingPropertyException:No such property:yyyy for class:script1465913927580309309860

在URI中我已经提到了yyyy-MM-dd格式的文件夹名称。我不知道如何在那里获取日期。总之,我希望将其作为&#39; C:/ myWork / 2011-01-01&#39;。我想到的问题是因为常规解析了“uri”这个问题。值 提前谢谢。

3 个答案:

答案 0 :(得分:0)

我可能不会这样做。

如果您创建一个处理器并在那里构造文件名并将文件名写入Exchange.FILE_NAME标头,然后将数据发送到uri,那会更好:

<uri>file://C:/mywork</uri>

您可能希望稍后更改文件名或执行其他处理,并且在处理器中执行此操作更容易,并且从xml dsl隐藏它。

即使您想在xml dsl中创建它,我仍然认为对于动态文件名,您需要创建它并将其设置为该标题。

答案 1 :(得分:0)

尝试将日期格式更改为:$ {date:now:yyyy-MM-dd}此格式可让您在一次替换中表达所需的日期。

所以你的终端应该是这样的:

<to>
  <uri>file://C:/mywork/${date:now:yyyy-MM-dd}</uri>
</to>

答案 2 :(得分:0)

使用动态路由。 使用<toD uri="/path/to/file/${date:now:yyyy-MM-dd}">以便根据运行时值动态路由