Spring boot 在spring kafka中使用SeektocurInterrorHandler时如何设置重试间隔时间
我正在使用spring启动应用程序中的SeekTocurInterrorHandler处理容器侦听器错误。我想设置重试间隔,如果发生异常,它应该等待一定时间,然后重试,直到最大尝试次数 我已尝试通过设置备份策略添加RetryTemplate。但这并不例外。当错误发生时,它将调用SeektocurInterrorHandler 2次Spring boot 在spring kafka中使用SeektocurInterrorHandler时如何设置重试间隔时间,spring-boot,apache-kafka,spring-kafka,Spring Boot,Apache Kafka,Spring Kafka,我正在使用spring启动应用程序中的SeekTocurInterrorHandler处理容器侦听器错误。我想设置重试间隔,如果发生异常,它应该等待一定时间,然后重试,直到最大尝试次数 我已尝试通过设置备份策略添加RetryTemplate。但这并不例外。当错误发生时,它将调用SeektocurInterrorHandler 2次 @Bean public RetryPolicy retryPolicy() { SimpleRetryPolicy simpleRetryP
@Bean
public RetryPolicy retryPolicy() {
SimpleRetryPolicy simpleRetryPolicy = new SimpleRetryPolicy();
simpleRetryPolicy.setMaxAttempts(retryMaxAttempts);
return simpleRetryPolicy;
}
@Bean
public BackOffPolicy backOffPolicy() {
FixedBackOffPolicy backOffPolicy = new FixedBackOffPolicy();
backOffPolicy.setBackOffPeriod(retryInterval);
return backOffPolicy;
}
@Bean
public RetryTemplate retryTemplate() {
RetryTemplate retryTemplate = new RetryTemplate();
retryTemplate.setRetryPolicy(retryPolicy());
retryTemplate.setBackOffPolicy(backOffPolicy());
return retryTemplate;
}
@Bean
public KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<String, String>> kafkaListenerContainerFactory(
ChainedKafkaTransactionManager<String, String> chainedTM) {
ConcurrentKafkaListenerContainerFactory<String, String> factory = new ConcurrentKafkaListenerContainerFactory<String, String>();
factory.setConsumerFactory(consumerFactory());
factory.setConcurrency(concurrency);
factory.getContainerProperties().setPollTimeout(pollTimeout);
factory.getContainerProperties().setSyncCommits(true);
// ------->> factory.setRetryTemplate(retryTemplate());
factory.getContainerProperties().setAckOnError(false);
factory.getContainerProperties().setTransactionManager(chainedTM);
SeekToCurrentErrorHandler errorHandler = new SeekToCurrentErrorHandler((record, exception) -> {
// handle errors
}, retryMaxAttempts);
factory.setErrorHandler(errorHandler);
log.debug("Kafka Receiver Config kafkaListenerContainerFactory created");
return factory;
}
@Bean
公共RetryPolicy RetryPolicy(){
SimpleRetryPolicy SimpleRetryPolicy=新的SimpleRetryPolicy();
simpleRetryPolicy.setMaxAttempts(retryMaxAttempts);
回归简单主义;
}
@豆子
公共退避政策退避政策(){
FixedBackOffPolicy backOffPolicy=新的FixedBackOffPolicy();
backOffPolicy.setBackOffPeriod(retryInterval);
退货退换货政策;
}
@豆子
公共RetryTemplate RetryTemplate(){
RetryTemplate RetryTemplate=新RetryTemplate();
setRetryPolicy(retryPolicy());
retryTemplate.setBackOffPolicy(backOffPolicy());
返回retryTemplate;
}
@豆子
公共KafkaListenerContainerFactory KafkaListenerContainerFactory(
ChainedKafkaTransaction管理器chainedTM){
ConcurrentKafkListenerContainerFactory=新ConcurrentKafkListenerContainerFactory();
setConsumerFactory(consumerFactory());
工厂设置并发(concurrency);
factory.getContainerProperties().setPollTimeout(pollTimeout);
factory.getContainerProperties().setSyncCommits(true);
//------>>factory.setRetryTemplate(retryTemplate());
factory.getContainerProperties().setAckoneError(false);
factory.getContainerProperties().setTransactionManager(chainedTM);
SeekToCurrentErrorHandler errorHandler=新的SeekToCurrentErrorHandler((记录,异常)->{
//处理错误
},retrymax);
工厂.setErrorHandler(errorHandler);
log.debug(“创建Kafka接收器配置kafkaListenerContainerFactory”);
返回工厂;
}
如何在使用SeektocurInterrorHandler时设置重试间隔时间?这是一个问题
但是,您可以使用重试模板执行此操作,但总尝试次数将是两个属性的倍数。谢谢@GaryRussell。我们预计何时发布?它现在在2.3.0.BUILD-SNAPSHOT中提供;候选版本当前计划在9月5日和2.3.0日发布。发布当前计划在9月19日发布。