动态SpringKafka监听器

rkue9o1l  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(480)

我将springkafka与spel结合使用,并尝试根据其中一个属性文件中的值来听不同的主题。
@kafkalistener(topics=“#{kafkatopics.gettopics().get('${key.in.property}')}”)
现在gettopics正在返回一张Map。
当get()返回一些字符串[]时,一切正常。
但是,如果get()返回“”,即我不想订阅任何主题,则会出现一些问题。
我得到了非法的特例。主题“”无效。
如果我不想在运行时听任何主题,有什么方法可以解决这个问题吗?

pwuypxnk

pwuypxnk1#

这个 @KafkaListener 有以下选项:

/**
 * Set to true or false, to override the default setting in the container factory. May
 * be a property placeholder or SpEL expression that evaluates to a {@link Boolean} or
 * a {@link String}, in which case the {@link Boolean#parseBoolean(String)} is used to
 * obtain the value.
 * <p>SpEL {@code #{...}} and property place holders {@code ${...}} are supported.
 * @return true to auto start, false to not auto start.
 * @since 2.2
 */
String autoStartup() default "";

所以,你可以用你的 kafkaTopics.getTopics().get() 作为确定是否需要启动该容器的条件。仅当容器启动时,它才订阅为其配置的主题。

相关问题