SpringCloudStream应用程序可配置主题名称

SpringCloudStream应用程序可配置主题名称,spring,spring-cloud,spring-cloud-stream,Spring,Spring Cloud,Spring Cloud Stream,我正试图找到一种方法来配置SpringCloudStream@StreamListener将收听的主题。我的第一次尝试是尝试使用SPeL来获得这个,例如 @StreamListener("#{ systemProperties['topic.name'] }") 但是这个表达式并没有被替换,我最终得到了 java.lang.IllegalArgumentException: Topic name can only have ASCII alphanumerics, '.', '_' and '

我正试图找到一种方法来配置SpringCloudStream@StreamListener将收听的主题。我的第一次尝试是尝试使用SPeL来获得这个,例如

@StreamListener("#{ systemProperties['topic.name'] }")
但是这个表达式并没有被替换,我最终得到了

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

启动应用程序时,有没有办法控制主题名称,而不仅仅是在编译时使用常量?

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


你到底想达到什么目的?目标和频道之间已经存在通过application.properties/yml的间接寻址。

在我的情况下,如果目标包含值之间的任何空格-例如
destination=foo,bar
,则会导致错误:

主题名称只能有ASCII字母数字。


在我删除空格后,它对我起了作用。我只是想分享它。

我想能够选择我的应用程序实例在运行时监听的主题。
spring.cloud.stream.bindings.input.destination=foo,bar
,然后
@StreamListener(Sink.input)
将监听主题foo和bar。谢谢,我在文档中错过了这一点。这确实解决了我的问题。