File端点的uri中的Spring属性和idempotentKey

时间:2015-04-10 21:41:10

标签: spring apache-camel endpoint idempotent

我使用文件端点来监控文件的更改。

  1. 我需要在编辑文件时收到通知(即,上次修改的时间更改)
  2. 我应该使用Spring属性占位符
  3. 从属性指定文件的路径

    如果我写的话,一切正常:

    <camelContext>
      <route>
        <from uri="file:/my/path?fileName=myFilename.txt&amp;noop=true&amp;idempotentKey=${file:name}-${file:modified}" />
        <log message="Received file: ${header.CamelFilePath} (${header.CamelFileLastModified})" />
        <to uri="direct:result" />
      </route>
    </camelContext>
    

    但是,如果我更改代码以使用Spring属性,因此创建<endpoint>,它就不再起作用了。

    <camelContext>
      <endpoint id="fileEndpoint"
      uri="file://${ids.log.dir}?fileName=${ids.log.file}&amp;noop=true&amp;idempotentKey=${file:name}-${file:modified}" />
    
      <route id="fileRoute">
        <from ref="fileEndpoint" />
        <log message="Received file: ${header.CamelFilePath} (${header.CamelFileLastModified})" />
        <to uri="direct:result" />
      </route>
    </camelContext>
    

    我想${}符号存在问题,${file:...}占位符过早扩展。

    如何解决此问题? (我将使用Spring属性,而不是Camel&#39; s。有没有办法逃脱$

1 个答案:

答案 0 :(得分:1)