2016-12-05 70 views
0

所以也許我錯過了很明顯的東西,這是非常可能的!Java中的Apache Camel URI過濾器DSL

但是,我想遷移從Spring到Java的路線。這條路線是這樣的:

<bean id="myFilter" class="my.filter.MyFilter /> 
<route> 
<from uri="ftp://someplace?filter=#myFilter" /> 
<to uri=(....) /> 
</route> 

當轉換到Java DSL我認爲以下將是等效的,但事實並非如此。我得到了不同於我原本想要的行爲:

MyFilter m = new MyFilter(); 
......... 
from("ftp://someplace") 
.filter().method(m) 
.to(....) 
; 

上面的方法似乎是從FTP服務器中檢索文件,然後逐個進行篩選。

鑑於春天的方式,與URI中的過濾器選項,似乎篩選出我不想第一的所有結果,然後繼續其快樂的小路。

有沒有一種方法可以將過濾器的功能重新創建爲Java DSL中URI的一部分?

我假設我必須以某種方式聲明一個bean以便能夠使用它,但我發現的文檔似乎並不清楚我如何實現這一點。

回答

1

你應該能夠做一些事情,如:

from("ftp://someplace?filter=#MyFilter").to("somewhere"); 

但你需要將MyFilter添加到註冊表中,或者如果您使用的藍圖,將其添加爲像一個bean:

<bean id="myFilter" class="com.mycompany.MyFileFilter"/> 

或者看看這裏的如何做到這一點的純java: http://camel.465427.n5.nabble.com/Adding-File-name-filter-for-RouteEndpointDefinition-td4968230.html

Camel how to add something to registry - with java, in general

+0

嗯,也許我不清楚,對不起。但我的意思是我有一個專門爲路由過濾的類(它根據文件的時間戳進行過濾,再加上一些額外的內容),並且我想引用該類作爲用於在URI中進行過濾的類 – Jsmith

+0

更新了我的答案。 –

+0

所以也許我做錯了,但這是我不斷髮生的問題。我從'(「ftp:// x?filter =#myFilter」)'',但總是以''無法將字符串轉換爲所需類型的GenericFileFilter值爲#myFilter'的錯誤。這是關於什麼的? – Jsmith

相關問題