2016-04-26 82 views
1

我有一個看起來像這樣的路線:調用帶有一個bash腳本頭參數駱駝EXEC

from("direct:start") .to("exec:bash?args=testScript.sh") 
.log("Process done."); 

這條線路運行正常。但是現在我需要用一個參數來呼叫腳本,這個參數是一個呼氣標題。

所以,我想:

.to("exec:bash?args=testScript.sh ${header.testHeader}") 

但不是運行與頭(整數)的實際值的腳本,它運行帶有字符串「$ {} header.testHeader」的腳本。

在我的腳本中,我構建了一個目錄。報頭值Im傳遞使目錄是這樣的:

testDirectory/${header.testHeader} 

不是:

testDirectory/882 

我知道標題值是否設置正確,因爲如果我這樣做:

.log("${header.testHeader}") 

我得到了我期望看到的標題的值(即882)。

有誰知道如何使用shell腳本調用exec並使用實際的標頭值?

謝謝

回答

1

問題是to()端點不是動態的。即對於每個新的交易所都不進行評估,僅在啓動時進行一次評估。 Camel 2.16.0引入了動態端點toD()。或者,如果您使用的是早期版本,則可以使用recipientList(),這也是動態評估的。在java DSL中會是這樣的: -

from("direct:start").recipientList().simple("exec:bash?args=testScript.sh ${header.testHeader}"); 
+0

非常感謝!我不知道.to。我使用的是Camel 2.15.5(以防其他人遇到此問題),以及使用recipientList()的第二種解決方案。簡單...像魅力一樣工作。 – JustBlossom