Java 有没有办法在出现异常时最大限度地提高Kafka侦听器的重试限制
我使用的是spring boot应用程序,卡夫卡消费者在其中消费消息并将其保存到Hbase中 如果在读取来自kafka的消息时出现任何异常,则主题为如何在批处理列表的情况下限制重试机制。我使用了下面的卡夫卡配置,但它正在无限期地重试Java 有没有办法在出现异常时最大限度地提高Kafka侦听器的重试限制,java,spring-boot,apache-kafka,spring-kafka,Java,Spring Boot,Apache Kafka,Spring Kafka,我使用的是spring boot应用程序,卡夫卡消费者在其中消费消息并将其保存到Hbase中 如果在读取来自kafka的消息时出现任何异常,则主题为如何在批处理列表的情况下限制重试机制。我使用了下面的卡夫卡配置,但它正在无限期地重试 @Bean public Map<String, Object> consumerConfigs() { Map<String, Object> props = new HashMap<>(); props.put
@Bean
public Map<String, Object> consumerConfigs() {
Map<String, Object> props = new HashMap<>();
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, bootStrapServer);
props.put(ConsumerConfig.GROUP_ID_CONFIG, gropuId);
props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, ByteArrayDeserializer.class);
props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, maxPollRecordSize);
props.put(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG, false);
return props;
}
@Bean
public ConcurrentKafkaListenerContainerFactory<String, byte[]> kafkaListenerContainerFactory() {
ConcurrentKafkaListenerContainerFactory<String, byte[]> factory = new ConcurrentKafkaListenerContainerFactory<>();
factory.setConcurrency(1);
factory.setConsumerFactory(consumerFactory());
factory.getContainerProperties().setAckOnError(false);
factory.getContainerProperties().setSyncCommits(true);
factory.setBatchErrorHandler(new SeekToCurrentBatchErrorHandler());
factory.setBatchListener(true);
return factory;
}
@Bean
公共地图使用者配置(){
Map props=newhashmap();
put(ConsumerConfig.BOOTSTRAP\u SERVERS\u CONFIG,bootStrapServer);
props.put(ConsumerConfig.GROUP\u ID\u CONFIG,gropuId);
put(ConsumerConfig.KEY\u反序列化程序\u类\u配置,StringDeserializer.CLASS);
put(ConsumerConfig.VALUE\u反序列化程序\u类\u配置,ByteArrayDeserializer.CLASS);
put(ConsumerConfig.MAX\u POLL\u RECORDS\u CONFIG,maxPollRecordSize);
put(ConsumerConfig.ENABLE\u AUTO\u COMMIT\u CONFIG,false);
返回道具;
}
@豆子
公共ConcurrentKafkaListenerContainerFactory kafkaListenerContainerFactory(){
ConcurrentKafkListenerContainerFactory=新ConcurrentKafkListenerContainerFactory();
工厂设置并发(1);
setConsumerFactory(consumerFactory());
factory.getContainerProperties().setAckoneError(false);
factory.getContainerProperties().setSyncCommits(true);
setBatchErrorHandler(新的SeekToCurrentBatchErrorHandler());
factory.setBatchListener(true);
返回工厂;
}
建议不要使用普通消费者,因为普通卡夫卡消费者没有任何可定义消费者重试最大次数的配置。因此,您需要使用特定的HBase接收器连接器才能将数据从Kafka读取到HBase。请参见此处,它似乎没有重试配置