我用以下方式定义了camel Fileendpoint:
<bean id="hotfolderEndpoint"
class="org.apache.camel.component.file.FileEndpoint"
factory-bean="camel"
factory-method="getEndpoint">
<constructor-arg ref="hotfolder" />
</bean>我想定义一些文件参数,如preMove,move等。变量hotfolder是取自JNDI的字符串,我对它没有影响。当我将属性定义为
<bean id="moveExp" class="org.apache.camel.model.language.SimpleExpression">
<property name="expression" value="done/${file:name}"/>
</bean>它未被正确解析,文件get name done/name
发布于 2010-05-12 14:22:56
我的案例
<camel:camelContext id="camel">
<camel:route>
<camel:from ref="hotfolderEndpoint"/>
<camel:to uri="file://c:/test/myfolder/toEnd"></camel:to>
</camel:route>
</camel:camelContext>
<camel:endpoint id="hotfolderEndpoint" camelContextId="camel"
uri="file://c:/test/hotfolder?move=backup/${date:now:yyyyMMdd}/${file:name}"/>结果: org.apache.camel.component.file.GenericFileOperationFailedException:无法创建目录: c:\test\hotfolder\backup\now:yyyyMMdd\name
II Case DSL
from("file://c:/test/myfolder?preMove=inprogress&moveFailed=backup/${date:now:yyyyMMdd}/${file:name}")
.to("file://c:/test/myfolder/toEnd");结果备份工作正常(已创建正在进行的文件夹),但移动引发异常: GenericFileOperationFailedException: Cannot rename preMove : GenericFilec:\test\hotfolder\xxx.txt to: GenericFilebackup\20100512
III案例
<bean id="hotfolderEndpoint"
class="org.apache.camel.component.file.FileEndpoint"
factory-bean="camel"
factory-method="getEndpoint">
<constructor-arg ref="hotfolder" />
<property name="readLock" value="rename" />
<property name="move" ref="moveExp"/>
</bean>
<bean id="moveExp" class="org.apache.camel.model.language.SimpleExpression">
<property name="expression" value="done/${file:name.noext}-done.${file:ext}"/>
</bean>与情况II类似的问题
IV病例
<camel:camelContext id="camel">
<camel:route>
<camel:from uri="file://c:/test/hotfolder?move=backup/${date:now:yyyyMMdd}/${file:name}"/>
<camel:to uri="file://c:/test/myfolder/toEnd"></camel:to>
</camel:route>
</camel:camelContext>结果:按预期工作
问:是我做错了什么,还是Camel中有个bug
发布于 2010-05-11 23:43:27
preMove是FileEndpoint上的一个选项,所以你可以让spring IoC它
<bean>
<property name="preMove" value="done"/>
</bean>我相信如果你只是想把它移到一个文件夹中,你可以省略${file:name}。它已经在Camel wiki页面http://camel.apache.org/file2.html上进行了说明
顺便说一句:你使用的是什么版本的Camel,是哪种操作系统?
https://stackoverflow.com/questions/2809896
复制相似问题