Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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
Java 骆驼:检测卡夫卡错误的IP_Java_Apache Camel_Apache Kafka - Fatal编程技术网

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

Java 骆驼:检测卡夫卡错误的IP,java,apache-camel,apache-kafka,Java,Apache Camel,Apache Kafka,我正在将Kafka配置为RouteBuilder中的源代码。我的目标是处理卡夫卡断线问题。我的RouteBuilder如下所示: new RouteBuilder() { public void configure() { onException(Exception.class).process(exchange -> { final Exception exception = exchange.getExceptio

我正在将Kafka配置为RouteBuilder中的源代码。我的目标是处理卡夫卡断线问题。我的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
                }
            });
        }
    };
我提供了错误的主机和端口,希望看到异常。但是,在日志中看不到异常,并且不会调用OneException处理。 知道我做错了什么吗

类似的问题可以通过在本地运行而不运行任何Kafka服务器来重现。这样做会产生持续的消息流:

Connection to node -1 could not be established. Broker may not be available.
是否有方法引发异常?
如果您需要任何帮助,我们将不胜感激。

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

这只是一个很好的例子,说明Apache Camel有多么棘手。我正在做一个有ApacheCamel Kafka的项目,我看到这个设计有多糟糕。每个Kafka参数都有相应的驼峰URL查询参数。如果Kafka引入了一个新的配置参数,而Apache Camel没有更新以获取新的查询参数,该怎么办?那么根本就没有办法使用这个卡夫卡参数!这太疯狂了

这种Kafka配置参数的示例是Kafka 2.1中引入的
client.dns.lookup
(我需要将其设置为“使用所有dns\u IP”)。没有Apache Camel URL查询参数来设置此参数


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

但我如何检测到我没有连接?也许你可以使用制作人,尝试先向Kafka发送一些东西。我取得了一些进展,并了解到我需要在端点使用setBridgeErrorHandler(请参阅)修改了示例,并在camelContext.start()之后添加了以下代码:final Collection endpoints=camelContext.getEndpoints();对于(端点:端点){final DefaultEndpoint endpoint1=(DefaultEndpoint)端点;endpoint1.setBridgeErrorHandler(true);final HashMap consumerProperties=new HashMap();consumerProperties.put(“BackOff乘数”,10);consumerProperties.put(“backoffErrorThreshold”,5);endpoint1.setConsumerProperties(consumerProperties);}我运行main()并希望看到使用者在5次尝试后停止连接到Kafka的尝试,但这不起作用。我一直收到的输出消息“无法建立到节点-1的连接。代理可能不可用。”这是正确的方法吗?我做错了什么?