将 TOML 配置字段传递给 Spring KafkaListener Annotation

Pass a TOML configuration field to a Spring KafkaListener Annotation

我有一个 toml 文件用于配置一个应用程序,该应用程序使用 Spring 框架的 KafkaListener 注释,签名如下:

@KafkaListener(id = "id0", topics = "some.hard.coded.topic.name")

我有一个配置管理器 class,它读取 TOML 文件并根据应用 运行 所在的环境配置各种应用设置。其中之一是要收听的主题。但是,我不知道如何将其传递给 Kafka Listener 注释。我的理解是,这可以通过结合使用 SPEL 和 yml 文件来完成,但我有点被锁定在这里使用 TOML。谁能建议?

@KafkaListenertopics 属性 确实支持包含 BeanFactory 访问权限的 SpEL,因此如果您有一些 bean 读取该 TOML 文件并将其表示为一些运行时属性集,例如吸气剂,那么你肯定可以在那里获得 SpEL。例如:

topics = "#{myTomlService.getTopic()}"

其中 myTomlService 是上述服务的 bean 名称。