2013-04-25 40 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