【发布时间】: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