为什么org.apache.kafka.common.errors.TimeoutException:抛出60000 ms后无法更新元数据?

时间:2019-11-19 09:08:35

标签: java apache-kafka spring-kafka kafka-producer-api

我的kafka经纪人(单人)运行大约一个月或多或少都很平稳,但是在某个时候,当我的生产者(spring应用程序)开始发送计划的消息时,我开始出现此错误: org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.使用者(也是单身)没有收到任何东西,也不会抛出错误。 我进行了一项研究,每个或多或少合适的答案都说这是因为“经纪人倒闭”,这对我没有帮助。重新启动代理后,一切正常,但是我不确定代理再次关闭之前需要花费多长时间。

Spring应用中的生产者设置:

public ProducerFactory<String, String> producerFactory() {
        Map<String, Object> props = new HashMap<>();
        props.put(
                ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,
                bootstrapAddress);
        props.put(
                ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG,
                StringSerializer.class);
        props.put(
                ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG,
                StringSerializer.class);
        props.put("ssl.endpoint.identification.algorithm", null);
        props.put("security.protocol", "SSL");
        props.put("ssl.truststore.location", truststoreLocation);
        props.put("ssl.truststore.password", truststorePassword);

        props.put("ssl.key.password", keyPassword);
        props.put("ssl.keystore.password", keystorePassword);
        props.put("ssl.keystore.location", keystoreLocation);

        props.put(ProducerConfig.RETRIES_CONFIG, retries);
        return new DefaultKafkaProducerFactory<>(props);
    }

bootstrapAddress是运行我的Spring应用程序的ip:port,retries设置为3

我发送到的主题肯定已创建(自动创建)并且网络连接正常。

这可能是问题的一部分:当我从数据库中检索大量数据并将其放入列表时,我的Spring应用程序遇到了java.lang.OutOfMemoryError,但是之后我无法在本地计算机上重现此错误那。不久之后,这个卡夫卡经纪人破产了。

有没有办法知道成功工作几周后是什么原因导致这种奇怪的行为,并在将来防止这种情况发生?

0 个答案:

没有答案