2016-11-01 31 views
1

我有一個Apache駱駝應用程序,它在生產環境中作爲三種相同的服務運行,以實現可伸縮性。我想使用駝峯郵件API將電子郵件服務器輪詢添加到此應用程序。因爲我不想讓所有這三個實例同時輪詢服務器,所以我想在駱駝輪詢之前加上一些鎖定機制。但是,由於郵件消費者正在投票消費者,所以在這種情況下我不能使用它們。是否有捷徑可尋 ?駱駝有條件輪詢消費者

總之,我有一個路線如下圖所示:

from("imaps://mymail...")//This polls periodically 
    .to(Processmail.class) 

但我需要像下面的東西在駱駝DSL

from("timer:mytimer") 
    .to("direct:checkDistributedLock") 
    .choice() 
     .when(header("gotlock").isEqualTo("true")) 
     .from("imaps://..") // can not use from here!!! 
    .end() 
+0

似乎是一個不錯的選擇,我會盡力謝謝。 – cacert

+0

@DariusX。如果您在下面輸入答案,我可以接受。再次感謝你。 – cacert

回答

1

pollEnrich()讓你「咻」地輪詢消費者爲您的路線中的一步。這意味着,它可以像「from()」一樣使用,但可以在路線的中途使用。

例子:

from("timer:mytimer") 
    .to("direct:checkDistributedLock") 
    .choice() 
     .when(header("gotlock").isEqualTo("true")) 
     .pollEnrich("imaps://mymail...") 
     .to(Processmail.class) 
    .end()