我使用了@Profile(“Training”)和@KafkaListener,即使传递随机配置文件,KafkaListener也正在工作。仅当配置文件匹配时才能工作
@Profile("training")
@KafkaListener(id = "my_grp", topicPartitions = {
@TopicPartition(topic = KafkaTopicConstants.MY_TOPIC, partitions = {"0", "1", "2","3","4","5"})
}, concurrency = KafkaTopicConstants.PARTITION_COUNT)
public void consumeRequest(ConsumerRecord<String,RequestedUrlData> record) {
try {
log.error("Consuming Data :::: ");
} catch (Exception e) {
log.error("Exception while consuming ",e);
}
}
这个类用@Service注释
spring kafka 文档这样描述了 @KafkaListener 注释
@KafkaListener 注解用于指定 bean 方法作为侦听器容器的侦听器。该 bean 包装在 MessagingMessageListenerAdapter 中,该适配器配置有各种功能,例如用于转换数据的转换器(如有必要)以匹配方法参数。
所以注解实际上是用在bean方法上的,并不意味着它注解的方法就是一个bean。它只是用侦听器适配器包装该方法。所以我们无法通过用@Profile注释方法来控制是否创建它。然而,使用@Profile注释该类将阻止创建@Service bean,从而不会创建kafka侦听器,因为现在没有使用@KafkaListener注释bean方法。