我有驼峰Fileendpoint以下列方式定义:
<bean id="hotfolderEndpoint"
class="org.apache.camel.component.file.FileEndpoint"
factory-bean="camel"
factory-method="getEndpoint">
<constructor-arg ref="hotfolder" />
</bean>
我想定义一些File参数,例如preMove,move等。 变量hotfolder是从JNDI获取的字符串,我对它没有影响。 当我将属性定义为
时<bean id="moveExp" class="org.apache.camel.model.language.SimpleExpression">
<property name="expression" value="done/${file:name}"/>
</bean>
未正确解析,文件名称已完成/名称
答案 0 :(得分:1)
I Case
<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");
结果 preMove工作正常(创建inprogress文件夹),但移动抛出异常: GenericFileOperationFailedException:无法将文件:GenericFile [c:\ test \ hotfolder \ xxx.txt]重命名为:GenericFile [backup \ 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中有错误
答案 1 :(得分:0)
preMove是FileEndpoint上的一个选项,所以你可以让它弹出IoC吧
<bean>
<property name="preMove" value="done"/>
</bean>
我相信你可以省略$ {file:name},如果你只想把它移到一个文件夹中。它已在Camel wiki页面上记录 http://camel.apache.org/file2.html
BTW:您使用的是哪种版本的Camel以及哪种操作系统?