【发布时间】:2021-08-13 21:54:38
【问题描述】:
我正在开发一个 Spring Boot 应用程序。该应用程序充当 Kafka 生产者,其中生产/发布消息不是很重要。我正在使用 spring-kafka 依赖项和 Kafka 的以下配置
@Bean
public ProducerFactory<String, Object> producerFactory() {
Map<String, Object> configProps = new HashMap<>();
configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaConfig.getKafkaBrokers());
configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, JsonSerializer.class);
configProps.put(ProducerConfig.RETRIES_CONFIG, 3);
return new DefaultKafkaProducerFactory<>(configProps);
}
@Bean
public KafkaTemplate<String, Object> kafkaTemplate(ProducerFactory<String, Object> producerFactory) {
return new KafkaTemplate<>(producerFactory);
}
当我向不存在的主题发送消息时。我的应用程序显示以下日志
17:18:45.187 [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [] [Producer clientId=producer-1] Error while fetching metadata with correlation id 3 : {aksubd=UNKNOWN_TOPIC_OR_PARTITION}
17:18:45.347 [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [] [Producer clientId=producer-1] Error while fetching metadata with correlation id 4 : {aksubd=UNKNOWN_TOPIC_OR_PARTITION}
17:18:45.522 [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [] [Producer clientId=producer-1] Error while fetching metadata with correlation id 5 : {aksubd=UNKNOWN_TOPIC_OR_PARTITION}
17:18:45.687 [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [] [Producer clientId=producer-1] Error while fetching metadata with correlation id 6 : {aksubd=UNKNOWN_TOPIC_OR_PARTITION}
17:18:45.864 [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [] [Producer clientId=producer-1] Error while fetching metadata with correlation id 7 : {aksubd=UNKNOWN_TOPIC_OR_PARTITION}
17:18:46.035 [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [] [Producer clientId=producer-1] Error while fetching metadata with correlation id 8 : {aksubd=UNKNOWN_TOPIC_OR_PARTITION}
17:18:46.203 [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [] [Producer clientId=producer-1] Error while fetching metadata with correlation id 9 : {aksubd=UNKNOWN_TOPIC_OR_PARTITION}
17:18:46.378 [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [] [Producer clientId=producer-1] Error while fetching metadata with correlation id 10 : {aksubd=UNKNOWN_TOPIC_OR_PARTITION}
17:18:46.546 [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [] [Producer clientId=producer-1] Error while fetching metadata with correlation id 11 : {aksubd=UNKNOWN_TOPIC_OR_PARTITION}
17:18:46.715 [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [] [Producer clientId=producer-1] Error while fetching metadata with correlation id 12 : {aksubd=UNKNOWN_TOPIC_OR_PARTITION}
17:18:46.888 [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [] [Producer clientId=producer-1] Error while fetching metadata with correlation id 13 : {aksubd=UNKNOWN_TOPIC_OR_PARTITION}
17:18:47.055 [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [] [Producer clientId=producer-1] Error while fetching metadata with correlation id 14 : {aksubd=UNKNOWN_TOPIC_OR_PARTITION}
17:18:47.233 [kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [] [Producer clientId=producer-1] Error while fetching metadata with correlation id 15 : {aksubd=UNKNOWN_TOPIC_OR_PARTITION}
日志处于无限循环中(我只显示开始的几个日志)。我故意给出一个不存在的无效主题“aksubd”只是为了证明这个问题。我是 kafka 的新手,想知道这是否是 Kafka 的正常行为,因为这可能会写入不必要的日志。我不希望应用程序无限记录。有没有办法在配置中设置一定数量的重试后停止,然后在控制台上抛出错误?注意:我尝试将重试次数设置为 3,但没有成功。
【问题讨论】:
标签: java spring spring-boot apache-kafka spring-kafka