Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 在spring kafka中使用SeektocurInterrorHandler时如何设置重试间隔时间_Spring Boot_Apache Kafka_Spring Kafka - Fatal编程技术网

Spring boot 在spring kafka中使用SeektocurInterrorHandler时如何设置重试间隔时间

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

我正在使用spring启动应用程序中的SeekTocurInterrorHandler处理容器侦听器错误。我想设置重试间隔,如果发生异常,它应该等待一定时间,然后重试,直到最大尝试次数

我已尝试通过设置备份策略添加RetryTemplate。但这并不例外。当错误发生时,它将调用SeektocurInterrorHandler 2次

@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日发布。