2016-05-09 47 views
0

我正在使用駱駝DSL中配置的kafka客戶端來監聽Kafka主題。還有另一個應用程序(服務器),其中設置了kafka並生成關於此主題的數據。如何在啓動端點時處理Camel DSL中的異常和重試路由啓動

<camel:endpoint id='docInfo' uri='kafka:${camel.kafka_broker}? topic=${camel.kafka_topic}&zookeeperConnect=${camel.kafka_zookeeper}&groupId=${k afka_groupId}&clientId=${camel.kafka_host}&consumerStreams=${camel.kafka_threads }' /> 
    <!-- The camel route to consume the message --> 
    <camel:route id="consumeDocInfoFromKafka" autoStartup="false"> 
    <camel:from uri='ref:docInfo' /> 
    </camel:route> 

一切都在啓動期間工作,除了一個場景,如果端點下來,camelContext的加載失敗和整個應用程序下來。 我想要一個解決方案,以便我可以在我的代碼中處理此異常,並在特定時間後重試連接,以便每當服務器啓動時,我的客戶可以連接到該異常。

+0

我還有一個疑問,如果我調用這個函數從我的線程獲取路由(啓動路由) camelContext.getRoute(「consumeDocInfo」); 即使上下文已經啓動,這將在幾秒內返回null,但幾秒後它會返回給我的路由。 是否有任何具體的原因路線需要時間來初始化或什麼? – Prashant

回答

2

您將無法捕捉路線本身內的接線問題。它是一個引導問題。但是,您可以使用Java DSL或捆綁激活器來連接路由,然後在路由啓動時捕獲任何問題。

重新研究你的第二個注意事項:路由在單獨的線程中被觸發(它們必須是爲了處理接收/消耗)。啓動延遲可能是JVM中這些罐子的首次接線或特定消費者端點初始化(在這種情況下,Kafka客戶端庫連接到Kafka服務器)。駱駝本身非常輕便,在上下文和路由初始化時沒有任何重量級的過程。

相關問題