Spring-Kafka:如何从application.yml传递kafka主题
Spring-Kafka: How to pass the kafka topic from the application.yml
我在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);
}
}
此时我有静态 kafka 主题(是一个字符串)是否可以将它放在 application.yml 中并从那里读取?感谢大家的帮助
您可以在 application.yml 文件中使用以下条目
通常我们使用@Value 如下所示从properties/yaml 文件中为您Java class 中指定的键选择数据。
@Value("${kafka.topic.name}")
private String TOPIC_NAME;
由于这里的Kafka Listener需要常量,可以直接使用如下
public class KafkaConsumer {
@Autowired
private UserRepository userRepository;
@KafkaListener(topics = "${kafka.topic.name}")
public void listen(@Validate UserDto userDto) {
User user= new User(userDto);
userRepository.save(userDto.getAge(), user);
}
}
您可以 post 您的主题 application.yml :
kafka:
template:
default-topic: "MyTopic"
在你的 KafkaListerner 中:
@KafkaListener(topics = "#{'${spring.kafka.template.default-topic}'}")
所以你应该解决“属性值”不能取动态值的问题
这对我有用。
我在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);
}
}
此时我有静态 kafka 主题(是一个字符串)是否可以将它放在 application.yml 中并从那里读取?感谢大家的帮助
您可以在 application.yml 文件中使用以下条目
通常我们使用@Value 如下所示从properties/yaml 文件中为您Java class 中指定的键选择数据。
@Value("${kafka.topic.name}")
private String TOPIC_NAME;
由于这里的Kafka Listener需要常量,可以直接使用如下
public class KafkaConsumer {
@Autowired
private UserRepository userRepository;
@KafkaListener(topics = "${kafka.topic.name}")
public void listen(@Validate UserDto userDto) {
User user= new User(userDto);
userRepository.save(userDto.getAge(), user);
}
}
您可以 post 您的主题 application.yml :
kafka:
template:
default-topic: "MyTopic"
在你的 KafkaListerner 中:
@KafkaListener(topics = "#{'${spring.kafka.template.default-topic}'}")
所以你应该解决“属性值”不能取动态值的问题
这对我有用。