camel:检测kafka错误的ip

jgwigjjp  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(328)

我正在将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.

是否有方法引发异常?任何帮助都将不胜感激。

camsedfj

camsedfj1#

当您有消息要路由时,routebuilder中的一个异常将被触发,但是由于您无法连接到kafka集群,因此您没有该异常。这就是为什么你看不到异常处理。

rsaldnfx

rsaldnfx2#

这只是一个很好的例子,Apache Camel 是多么狡猾。我正在做一个有apache camel kafka的项目,我看到这个设计有多糟糕。每个kafka参数都有相应的camel url查询参数。如果kafka引入了一个新的配置参数,而apachecamel没有更新以获得一个新的查询参数呢?那么根本就没有办法使用这个Kafka参数!太疯狂了。
这种kafka配置参数的示例如下 client.dns.lookup (我需要将其设置为“使用所有dns IP”)在kafka 2.1中引入。没有apache camel url query param来设置这个!
解决方案:用SpringKafka代替Apache Camel Kafka。

相关问题