我使用 @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
}
}
我不知道该怎么办,也不知道该怎么办。
1条答案
按热度按时间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())。@
前缀不是必需的。