骆驼:检测卡夫卡错误的IP

时间:2017-11-13 16:58:20

标签: java apache-camel apache-kafka

我正在将Kafka配置为我的RouteBuilder中的源。我的目标是处理Kafka断开连接问题。我的RouteBuilder如下:

new RouteBuilder() {
        public void configure() {
            onException(Exception.class).process(exchange -> {
                final Exception exception = exchange.getException();
                logger.error(exception.getMessage());
                // will do more processing here
            });
            from(String.format("kafka:%s?brokers=%s:%s", topicName, host, port)).bean(getMyService(), "myMethod")
            .process(new Processor() {
                @Override
                public void process(Exchange exchange) throws Exception {
                    // some more processing
                }
            });
        }
    };

我提供了错误的主机和端口,并且预计会看到异常。但是,日志中没有异常,并且不会调用onException处理。 知道我做错了吗?

通过在本地运行https://github.com/apache/camel/blob/master/examples/camel-example-kafka/src/main/java/org/apache/camel/example/kafka/MessageConsumerClient.java而不运行任何Kafka服务器,可以重现类似的问题。这样做会导致不断的消息流:

Connection to node -1 could not be established. Broker may not be available.

有没有办法抛出异常? 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

当您有路由消息时,将触发RouteBuilder中的OnException,但由于您无法连接到Kafka群集,因此您没有。这就是你没有看到异常处理的原因。

答案 1 :(得分:0)

这只是一个很好的例子,A​​pache Camel非常棘手。我正在一个具有Apache Camel Kafka的项目中,我看到它的设计有多么糟糕。每个Kafka参数都有对应的Camel URL查询参数。如果Kafka引入了新的配置参数,而Apache Camel没有更新以获得新的查询参数怎么办?这样就根本无法使用此Kafka参数!太疯狂了。

这种Kafka配置参数的示例是在Kafka 2.1中引入的client.dns.lookup(我需要将其设置为'use_all_dns_ips')。没有Apache Camel URL query-param来设置它!

解决方案:用Spring Kafka替换Apache Camel Kafka。

相关问题