动态 Spring Kafka 侦听器
Dynamic Spring Kafka Listener
我正在将 spring kafka 与 SPEL 一起使用,并尝试根据 属性 文件之一中存在的值来收听不同的主题。
@KafkaListener(topics="#{kafkaTopics.getTopics().get('${key.in.property}')}")
现在 getTopics 正在返回 .
的地图
当我从 get() 返回一些 String[] 时一切正常。
但是,如果 get() 返回 "",即我不想订阅任何主题,然后有一些问题。
我收到 IllegalTopicException。 无效主题“”。
如果我不想在运行时听任何话题,有什么办法可以解决这个问题?
@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()
作为条件来确定是否需要启动该容器。仅当容器启动时,它才会订阅为其配置的主题。
我正在将 spring kafka 与 SPEL 一起使用,并尝试根据 属性 文件之一中存在的值来收听不同的主题。
@KafkaListener(topics="#{kafkaTopics.getTopics().get('${key.in.property}')}")
现在 getTopics 正在返回 .
的地图当我从 get() 返回一些 String[] 时一切正常。
但是,如果 get() 返回 "",即我不想订阅任何主题,然后有一些问题。
我收到 IllegalTopicException。 无效主题“”。
如果我不想在运行时听任何话题,有什么办法可以解决这个问题?
@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()
作为条件来确定是否需要启动该容器。仅当容器启动时,它才会订阅为其配置的主题。