Да, это довольно просто.
@SpringBootApplication
public class So61684460Application {
public static void main(String[] args) {
SpringApplication.run(So61684460Application.class, args);
}
@MyListener(topics = "so61684460", id = "so61684460")
public void listen(String in) {
System.out.println(in);
}
@Bean
public NewTopic topic() {
return TopicBuilder.name("so61684460").partitions(3).replicas(1).build();
}
}
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD, ElementType.ANNOTATION_TYPE })
@KafkaListener(concurrency = "${my.concurrency}")
@interface MyListener {
@AliasFor(annotation = KafkaListener.class, attribute = "id")
String id();
@AliasFor(annotation = KafkaListener.class, attribute = "topics")
String[] topics() default "";
}
Как видите, помимо ограничения видимости некоторых атрибутов, вы можете сделать их обязательными (id
выше), изменить значение по умолчанию, или установить жестко заданные или параметризованные значения в невидимых атрибутах (concurrency
выше).
Это описано в документации .