如何将现有Spring Cloud Data Flow Starter示例应用与Source Bean结合使用
问题原因与遗漏配置说明
你遇到的不通问题是CDF与函数式Spring Cloud Stream应用适配的常见配置遗漏,以下是需要补充的配置项:
- 必须添加CDF应用类型标识:在自定义Source的配置中新增
spring.cloud.dataflow.stream.app.type=source,CDF需要通过该属性识别应用为源类型,才能自动将你的output绑定与流中Sink的input绑定映射到同一个中间件目的地,没有这个配置时CDF不会执行自动绑定映射,两端自然处于不同通道。 - 本地测试需手动指定公共目的地:如果没有通过CDF部署流而是本地直接启动两个应用测试,需要手动给两端配置相同的目的地:
- Source端新增配置:
spring.cloud.stream.bindings.output.destination=自定义公共通道名 - Sink端新增配置:
spring.cloud.stream.bindings.input.destination=自定义公共通道名
- Source端新增配置:
- 部分版本需显式开启反应式函数支持:你使用了返回Flux的反应式Supplier,部分Spring Cloud Stream版本需要新增配置
spring.cloud.stream.function.reactive.enabled=true,避免框架将反应式Supplier识别为普通轮询式Supplier处理,导致消息发射逻辑异常。 - 统一序列化格式:新增配置
spring.cloud.stream.bindings.output.content-type=application/json,显式指定消息序列化格式,避免和官方File Sink的默认序列化规则不兼容导致消息无法被识别。
你之前使用@EnableBinding和@PollableSource可以正常运行,是因为旧的注解模型会自动添加CDF源类型的元数据标识,框架也会自动处理绑定映射和序列化配置,不需要手动额外设置。
内容的提问来源于stack exchange,提问作者Mike Summers
相关产品推荐
相关产品推荐

