【问题标题】:Spring cloud stream application configurable topic nameSpring Cloud Stream 应用程序可配置主题名称
【发布时间】:2017-03-22 12:06:39
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: spring spring-cloud spring-cloud-stream


    【解决方案1】:

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

    您到底想达到什么目的?通过 application.properties/yml 在目标和通道之间已经存在间接关系。

    【讨论】:

    • 我希望能够选择我的应用程序实例在运行时监听的众多主题中的哪一个。
    • spring.cloud.stream.bindings.input.destination=foo,bar 然后@StreamListener(Sink.INPUT) 将监听主题 foo 和 bar。
    • 谢谢,我在文档中错过了这一点。这确实解决了我的问题。
    【解决方案2】:

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

    Topic name can only have ASCII alphanumerics.

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

    【讨论】:

      猜你喜欢
      • 2022-12-19
      • 2020-04-19
      • 2021-10-13
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多