2013-05-10 59 views
1

對於某些駱駝路線,我需要以下行爲:路線必須以活動狀態啓動,但當前時間介於X AM和Y PM之間時也必須暫停。在暫停狀態下啓動路線並安排履歷

所有的路線都以一個定時器開始(例如每隔30秒,每隔5分鐘...),但是我希望路線只在當天的給定時間段內被觸發。

我可以使用ScheduledRoutePolicy計劃當前活動並正在運行的路由的自動掛起和恢復。

但我不明白如何在暫停狀態下啓動路由,例如,當前時間是路由應該暫停的時間段。 RoutePolicy計劃掛起/重新啓動路線的作業,但是當駱駝啓動我的路線時,所有路線都會被啓動,無論路線是否應該暫停。

我可以實現它的唯一方法,似乎在計時器中放入時間參數,從而設置第一個事件的一天的時間。

在這種情況下,如果它在預定時間之前,那麼定時器不會觸發任何事件。然後,ScheduledPolicy將負責暫停路線,然後在一段時間後它將恢復路線。

回答

2

您可以將路由設置爲不以autoStartup選項開始。看到這個頁面的更多細節:http://camel.apache.org/configuring-route-startup-ordering-and-autostartup.html

+0

感謝您的答覆,我知道autostartup = false參數。但是這樣做,路線的初始狀態就會停止。從駱駝文件,他們的建議是暫停/恢復路線,而不是開始/停止它們http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/CamelContext.html – emas 2013-05-11 15:25:47

+0

沒關係。路由策略也會處理它,以便第一次啓動路由,然後掛起/恢復。雖然你可以在你的路由策略中配置你想要做的事情。 – 2013-05-11 15:53:59

+1

我讀了CronScheduledRoutePolicy的源代碼,該類擴展了ScheduledRoutePolicy,但它不恢復路由「停止」,它只恢復暫停的路由。所以,這有點棘手,我想我必須編寫一個定製的策略來管理我的案例。 – emas 2013-05-12 12:52:00