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