Kafka RetryableTopic -尝试中的占位符

rsl1atfo  于 2023-10-15  发布在  Apache
关注(0)|答案(1)|浏览(95)

我使用 @RetryableTopic 和 * 自定义命名策略 * 作为重试主题
在类中的 List 字段中,

@Data
@ConfigurationPropertis(value = "my.test")
public class TestConfig {

    private SubTest subTest = new SubTest();
    
    public static class SubTest {
        String strTopics ="FIRST, SECOND";
        List<String> topics = new ArrayList<>(Arrays.asList(strTopics.split(",")));
    }

}

我想使用 topics.size() in @RetryableTopic in attempts 如下:

public class Test {

    private final TestConfig testConfig;

    @RetryableTopic(
        attempts ="#{testConfig.subTest.topics.size}",
        backoff = @Backoff(delay=1000),
        autoCreateTopics = "false")
    )
    @KafkaListener(topics = "myTopic1",
    public void processMessage(MyPojo1 message) {
       // ... message processing
    }
}

我不知道该怎么办,也不知道该怎么办。

dzhpxtsq

dzhpxtsq1#

Spring for Apache Kafka为当前侦听器提供了一个特殊的伪bean名称(默认情况下为__listener,但在annnotation上可重写)。
https://docs.spring.io/spring-kafka/docs/current/reference/html/#annotation-properties
因此,您可以使用"#{__listener.testConfig.subTest.topics.size()}",但字段必须是公共的(或具有公共getters())。
@前缀不是必需的。

相关问题