@KafkaListener 作为元注解

从 2.2 版本开始,您现在可以使用@KafkaListener作为元注解。以下示例展示了如何操作。

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@KafkaListener
public @interface MyThreeConsumersListener {

    @AliasFor(annotation = KafkaListener.class, attribute = "id")
    String id();

    @AliasFor(annotation = KafkaListener.class, attribute = "topics")
    String[] topics();

    @AliasFor(annotation = KafkaListener.class, attribute = "concurrency")
    String concurrency() default "3";

}

您必须至少为topicstopicPatterntopicPartitions设置别名(并且通常情况下,除非您已在消费者工厂配置中指定了group.id,否则需要设置idgroupId)。以下示例展示了如何操作。

@MyThreeConsumersListener(id = "my.group", topics = "my.topic")
public void listen1(String in) {
    ...
}