Spring-Kafka:如何从application.yml传递kafka主题

Jac*_*ket 3 spring apache-kafka spring-kafka

我在 Spring Kafka 中有一个小项目,我希望可以从 application.yml 传递我的 kafka 主题并避免硬编码问题。目前我有这样的情况:


public class KafkaConsumer {
    @Autowired
    private UserRepository userRepository;


    @KafkaListener(topics = "myTopic")
    public void listen(@Validate UserDto userDto) {

        User user= new User(userDto);
        userRepository.save(userDto.getAge(), user);
    }
}
Run Code Online (Sandbox Code Playgroud)

此时我有静态 kafka 主题(作为字符串)是否可以将其放入 application.yml 并从那里读取它?感谢大家的帮助

Num*_* 21 6

您可以在 application.yml 中发布您的主题:

kafka:
  template:
    default-topic: "MyTopic"
Run Code Online (Sandbox Code Playgroud)

在你的 KafkaListerner 中:

@KafkaListener(topics = "#{'${spring.kafka.template.default-topic}'}")
Run Code Online (Sandbox Code Playgroud)

所以你应该解决“属性值”无法取动态值的问题

这对我有用。

  • 您不需要 SpEL 来实现简单的占位符 - `@KafkaListener(topics = "${spring.kafka.template.default-topic}")` 就可以了。 (5认同)