仿照 KafkaListener 注解创建消费者方式,根据 topic 列表配置 创建不同消费者类
时间: 2024-06-12 20:07:49 浏览: 110
生产者消费者问题(信号量)(linux)实现代码
可以使用Spring中的@KafkaListener注解来创建消费者,但是需要根据不同的topic配置不同的消费者类,可以使用@Conditional注解来实现。
首先,需要创建一个接口,用来定义不同的topic和对应的消费者类:
```
public interface KafkaConsumerFactory {
String TOPIC_A = "topicA";
String TOPIC_B = "topicB";
@ConditionalOnProperty("kafka.consumer.topicA.enabled")
@KafkaListener(topics = TOPIC_A)
void consumeTopicA(String message);
@ConditionalOnProperty("kafka.consumer.topicB.enabled")
@KafkaListener(topics = TOPIC_B)
void consumeTopicB(String message);
}
```
在这个接口中,我们定义了两个topic:topicA和topicB,并且使用@ConditionalOnProperty注解来判断是否启用对应的消费者类,如果启用,则使用@KafkaListener注解来定义消费者方法。
接下来,在Spring的配置文件中,需要根据不同的topic配置不同的属性:
```
kafka.consumer.topicA.enabled=true
kafka.consumer.topicB.enabled=false
```
在这个配置中,我们启用了topicA的消费者,并且禁用了topicB的消费者。
最后,在启动类中,需要将KafkaConsumerFactory注入到Spring容器中:
```
@SpringBootApplication
public class Application {
@Autowired
private KafkaConsumerFactory kafkaConsumerFactory;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
这样,根据不同的topic配置,Spring会自动创建对应的消费者类,并且在启动时自动注册到Kafka中。
阅读全文