2013-04-25 59 views
4

我想在骆驼交易所上设置一个属性,然后在保存文件时使用这个属性。在我的骆驼DSL我有以下几点:使用骆驼DSL的交换财产“到”

.process(processorToSetExhangeProperty) // sets the property <uid> on the exchange 
.to("file:/tmp?fileName=file-" + property("uid") + ".xml") 

该文件被保存为:

"file-property{uid}.xml" though 

我的处理器如下:

@Override 
    public void process(Exchange exchange) throws Exception { 
     UUID uuid = UUID.randomUUID(); 
     exchange.setProperty("uid", 
       uuid.toString()); 
     exchange.setOut(exchange.getIn()); 
    } 

什么可能去的任何想法错了,或者我怎么能做到这一点?

回答

1

修订上述 新的答案被接受的,而不是这个前一个:


答案是[是]:

。要(“文件:/ tmp目录文件名= $文件 - {property.uid}“)+”.xml“)

这个简单的表达式会吸引交换属性。有关可以引入的内容的完整列表,请参阅Simple Expression Language Reference

+0

这是部分错误的:正如V.Goldin所说,在构建路由过程中会评估to()组件。 在你的情况下,它的工作原理部分是因为uid可能只计算一次。 如果您在多封邮件后检查您的uid,您应该注意到它可能永远不会更改。 – 2014-12-01 17:47:36