我的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
,但是之后我无法在本地计算机上重现此错误那。不久之后,这个卡夫卡经纪人破产了。
有没有办法知道成功工作几周后是什么原因导致这种奇怪的行为,并在将来防止这种情况发生?