【问题标题】:Configuring custom retry topic in spring-kafka 2.8在 spring-kafka 2.8 中配置自定义重试主题
【发布时间】:2022-01-24 13:14:43
【问题描述】:

尝试自定义主题名称以进行重试。运行时出现循环引用错误。可能是什么原因? 请求的 bean 当前正在创建中:是否存在无法解析的循环引用?

@bean
public RetryTopicNamesProviderFactory myRetryNamingProviderFactory() {
    return new CustomRetryTopicNamesProviderFactory();
}

 @KafkaListener(topics = "${application.kafka.topic-incoming}", groupId = "${application.kafka.consumer-group-id}",id = "2", concurrency = "1")
 @RetryableTopic(attempts = "1", backoff = @Backoff(delay = 1_000, maxDelay = 10_000, multiplier = 2), autoCreateTopics = "false")
public void listenRequest(@Payload @Valid HelloRequest message) {
        log.info("Message recieved :: {} on {}", messages.toString(), topics);
        if (messages.getName().equals("Failed")) {
            log.info("Throwing Error");
            throw new RuntimeException("failed");
        }
     
    }


public class CustomRetryTopicNamesProviderFactory implements RetryTopicNamesProviderFactory {

    @Override
    public RetryTopicNamesProvider createRetryTopicNamesProvider(DestinationTopic.Properties properties) {

        if (properties.isMainEndpoint()) {
            return new SuffixingRetryTopicNamesProviderFactory.SuffixingRetryTopicNamesProvider(properties);
        } else {
            return new SuffixingRetryTopicNamesProviderFactory.SuffixingRetryTopicNamesProvider(properties) {
                @Override
                public String getTopicName(String topic) {
                    return  super.getTopicName(topic)+"-na1995";
                }

            };
        }
    }

}

【问题讨论】:

    标签: java apache-kafka spring-kafka


    【解决方案1】:

    我将 CustomRetryTopicNamesProviderFactory 从 @Bean 移到 @Component 并且它起作用了。

    @Component
    public class CustomRetryTopicNamesProviderFactory implements RetryTopicNamesProviderFactory {
    
        @Override
        public RetryTopicNamesProvider createRetryTopicNamesProvider(DestinationTopic.Properties properties) {
    
            if (properties.isMainEndpoint()) {
                return new SuffixingRetryTopicNamesProviderFactory.SuffixingRetryTopicNamesProvider(properties);
            } else {
                return new SuffixingRetryTopicNamesProviderFactory.SuffixingRetryTopicNamesProvider(properties) {
                    @Override
                    public String getTopicName(String topic) {
                        return  super.getTopicName(topic)+"-na1995";
                    }
    
                };
            }
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 2023-02-25
      • 2019-01-11
      • 2022-12-10
      • 1970-01-01
      • 2016-04-16
      • 2021-10-13
      • 2017-07-30
      相关资源
      最近更新 更多