Spring 如何处理异常&;在启动端点时重试骆驼DSL中的路由启动
我正在使用骆驼DSL中配置的卡夫卡消费者收听卡夫卡主题。还有另一个应用程序(服务器)安装了kafka,它正在生成有关此主题的数据Spring 如何处理异常&;在启动端点时重试骆驼DSL中的路由启动,spring,apache-camel,dsl,Spring,Apache Camel,Dsl,我正在使用骆驼DSL中配置的卡夫卡消费者收听卡夫卡主题。还有另一个应用程序(服务器)安装了kafka,它正在生成有关此主题的数据 <camel:endpoint id='docInfo' uri='kafka:${camel.kafka_broker}? topic=${camel.kafka_topic}&zookeeperConnect=${camel.kafka_zookeeper}&groupId=${k afka_groupId}&client
<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>
除了在启动过程中端点关闭、上下文加载失败和整个应用程序关闭的场景之外,所有的一切都正常工作。
我需要一个解决方案,以便我可以在代码中处理此异常,并在特定时间后重试连接,以便每当服务器启动时,我的消费者都可以连接到该服务器。您将无法捕获路由本身中的布线问题。这是一个自举问题。但是,您可以使用JavaDSL或bundle Activator连接路由,然后在路由启动时捕获任何问题
再次研磨第二个注意事项:路由在单独的线程中启动(它们必须是为了处理接收/消耗)。启动延迟可能是JVM中这些JAR的首次连接或特定使用者端点初始化(在本例中是连接到Kafka服务器的Kafka客户端库)。Camel本身非常轻量级,在上下文和路由初始化期间没有任何重量级进程。您将无法捕获路由本身中的布线问题。这是一个自举问题。但是,您可以使用JavaDSL或bundle Activator连接路由,然后在路由启动时捕获任何问题
再次研磨第二个注意事项:路由在单独的线程中启动(它们必须是为了处理接收/消耗)。启动延迟可能是JVM中这些JAR的首次连接或特定使用者端点初始化(在本例中是连接到Kafka服务器的Kafka客户端库)。Camel本身非常轻量级,在上下文和路由初始化期间没有任何重量级进程。如果我调用此函数从我的线程(启动路由)camelContext.getRoute(“ConsumerDocInfo”);获取路由,我还有一个疑问;这将在几秒钟内返回null,即使上下文已经启动,但几秒钟后它会返回路由。是否有任何特定的原因导致路由需要时间初始化或其他什么?如果我调用此函数从我的线程获取路由(启动路由)camelContext.getRoute(“ConsumerDocInfo”);这将在几秒钟内返回null,即使上下文已经启动,但几秒钟后它会返回路由。是否有任何具体原因导致路由需要时间进行初始化或其他操作?