Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 如何处理异常&;在启动端点时重试骆驼DSL中的路由启动_Spring_Apache Camel_Dsl - Fatal编程技术网

Spring 如何处理异常&;在启动端点时重试骆驼DSL中的路由启动

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

我正在使用骆驼DSL中配置的卡夫卡消费者收听卡夫卡主题。还有另一个应用程序(服务器)安装了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>

除了在启动过程中端点关闭、上下文加载失败和整个应用程序关闭的场景之外,所有的一切都正常工作。
我需要一个解决方案,以便我可以在代码中处理此异常,并在特定时间后重试连接,以便每当服务器启动时,我的消费者都可以连接到该服务器。

您将无法捕获路由本身中的布线问题。这是一个自举问题。但是,您可以使用JavaDSL或bundle Activator连接路由,然后在路由启动时捕获任何问题


再次研磨第二个注意事项:路由在单独的线程中启动(它们必须是为了处理接收/消耗)。启动延迟可能是JVM中这些JAR的首次连接或特定使用者端点初始化(在本例中是连接到Kafka服务器的Kafka客户端库)。Camel本身非常轻量级,在上下文和路由初始化期间没有任何重量级进程。

您将无法捕获路由本身中的布线问题。这是一个自举问题。但是,您可以使用JavaDSL或bundle Activator连接路由,然后在路由启动时捕获任何问题


再次研磨第二个注意事项:路由在单独的线程中启动(它们必须是为了处理接收/消耗)。启动延迟可能是JVM中这些JAR的首次连接或特定使用者端点初始化(在本例中是连接到Kafka服务器的Kafka客户端库)。Camel本身非常轻量级,在上下文和路由初始化期间没有任何重量级进程。

如果我调用此函数从我的线程(启动路由)camelContext.getRoute(“ConsumerDocInfo”);获取路由,我还有一个疑问;这将在几秒钟内返回null,即使上下文已经启动,但几秒钟后它会返回路由。是否有任何特定的原因导致路由需要时间初始化或其他什么?如果我调用此函数从我的线程获取路由(启动路由)camelContext.getRoute(“ConsumerDocInfo”);这将在几秒钟内返回null,即使上下文已经启动,但几秒钟后它会返回路由。是否有任何具体原因导致路由需要时间进行初始化或其他操作?