我正在使用在camel DSL中配置的kafka使用者来收听Kafka主题。还有另一个应用程序(服务器),其中设置了kafka,并且正在生成有关此主题的数据。
<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 :(得分:2)
您将无法在路线内发现布线问题。这是一个引导问题。但是,您可以使用Java DSL或捆绑激活器连接路由,然后在路由启动时捕获任何问题。
重新研究你的第二个音符:路线是在一个单独的线程中启动的(它们必须是为了处理接收/消费)。启动延迟可能是JVM中的那些jar的第一次连接或特定的消费者端点初始化(在这种情况下是连接到Kafka服务器的Kafka客户端库)。 Camel本身非常轻量级,在上下文和路由的初始化过程中没有任何重量级的过程。