Spring 云流应用可配置主题名称

Spring cloud stream application configurable topic name

我正在尝试找到一种方法来配置 spring 云流 @StreamListener 将收听的主题。我的第一次尝试是尝试使用 SPeL 来获取它,例如

@StreamListener("#{ systemProperties['topic.name'] }")

但表达式没有被替换,我最终得到

java.lang.IllegalArgumentException: Topic name can only have ASCII alphanumerics, '.', '_' and '-'

有什么方法可以在启动应用程序时控制主题名称,而不是仅在编译时使用常量?

处理@StreamListenerBeanPostProcessor不支持SpEL或属性占位符;它只能包含绑定到活页夹目标的对象(消息通道)的 bean 名称。

您到底想达到什么目的?通过应用程序在目标和通道之间已经存在间接寻址。properties/yml。

在我的例子中,如果目标包含值之间的任何 space - 例如 destination=foo, bar,则会导致错误:

Topic name can only have ASCII alphanumerics.

删除 spaces 后,它对我有用。只是想分享一下。