【问题标题】:camel kafka route does not stay up骆驼卡夫卡路线不熬夜
【发布时间】:2018-12-21 01:21:09
【问题描述】:

我正在尝试将kafka与camel一起使用并设置以下路线:

public class WorkflowEventConsumerRoute extends RouteBuilder {
    private static final String KAFKA_ENDPOINT =
         "kafka:payments-bus?brokers=localhost:9092";
    ...
    @Override
    public void configure() {
        from(KAFKA_ENDPOINT)
            .routeId(format(KAFKA_CONSUMER))
            .to("mock:end);
    }
}

当我启动我的 Spring Boot 应用程序时,我可以看到路由已启动,但在此之后它立即关闭,日志中没有给出任何原因:

2018-12-21 12:06:45.012  INFO 12184 --- [           main] o.a.kafka.common.utils.AppInfoParser     : Kafka version : 2.0.1
2018-12-21 12:06:45.013  INFO 12184 --- [           main] o.a.kafka.common.utils.AppInfoParser     : Kafka commitId : fa14705e51bd2ce5
2018-12-21 12:06:45.014  INFO 12184 --- [           main] o.a.camel.spring.SpringCamelContext      : Route: kafka-consumer started and consuming from: kafka://payments-bus?brokers=localhost%3A9092
2018-12-21 12:06:45.015  INFO 12184 --- [r[payments-bus]] o.a.camel.component.kafka.KafkaConsumer  : Subscribing payments-bus-Thread 0 to topic payments-bus
2018-12-21 12:06:45.015  INFO 12184 --- [           main] o.a.camel.spring.SpringCamelContext      : Total 1 routes, of which 1 are started
2018-12-21 12:06:45.015  INFO 12184 --- [           main] o.a.camel.spring.SpringCamelContext      : Apache Camel 2.23.0 (CamelContext: camel-1) started in 0.234 seconds
2018-12-21 12:06:45.019  INFO 12184 --- [           main] a.c.n.t.p.workflow.WorkflowApplication   : Started WorkflowApplication in 3.815 seconds (JVM running for 4.513)
2018-12-21 12:06:45.024  INFO 12184 --- [      Thread-10] o.a.camel.spring.SpringCamelContext      : Apache Camel 2.23.0 (CamelContext: camel-1) is shutting down

另一方面,如果创建一个单元测试并指向同一个 kafka 端点,我可以使用 CamelTestSupport 提供的 org.apache.camel.ConsumerTemplate 实例读取 kafka 主题内容

最终,如果我用 activemq 替换路由中的 kafka 端点,则路由启动正常并且应用程序保持运行。

显然我遗漏了一些东西,但我不知道是什么。

提前感谢您的帮助。

【问题讨论】:

    标签: java apache-kafka apache-camel


    【解决方案1】:

    您的 spring-boot 应用程序是否有 -web-starter。如果没有,那么您应该打开骆驼运行控制器以保持启动应用程序运行。

    在application.properties中添加

     camel.springboot.main-run-controller = true
    

    【讨论】:

    • 谢谢。有效。只是好奇为什么要采用这种方法。如果我用一个活动的 mq 替换 Kafka 端点,那么路由会保持不变。更重要的是,如果我同时有一个 kafka 路由和一个活动 mq 路由,那么 kafka 路由可以正常使用消息,
    • 那么它与有一个非守护线程运行有关,activemq 可能已经启动,导致 JVM 保持运行。
    猜你喜欢
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    相关资源
    最近更新 更多