Stream Applications
在某些情况下,当 Stream 需要使用不同的消息中间件时,Stream 可以将其Applications 绑定到多个 spring cloud stream binders。在这些情况下,正确的配置 Applictations 的 binders 非常重要。例如,以下配置的 transform 转换器将会支持绑定Kafka和Rabbit:
http | multibindertransform --expression=payload.toUpperCase() | log在此 Stream 中,每个 Applications 通过以下方式连接到消息传递中间件:
- HTTP Source 将事件发送到RabbitMQ( - rabbit1)。
- Multi-Binder Transform处理器从RabbitMQ( - rabbit1)接收事件,并将处理后的事件发送到Kafka(- kafka1)。
- log sink 从Kafka( - kafka1)接收事件。
在这里,rabbit1和kafka1是spring cloud stream Applications 属性中给出的绑定器名称。 基于此设置,每个 Applications 包含的 binders 如下:
- HTTP: Rabbit binder 
- Transform: Both Kafka and Rabbit binders 
- Log: Kafka binder 
spring-cloud-stream  binder 属性可以在 Applications 本身设置。如果没有,则可以在deployment部署 Stream 时传递属性,如以下示例所示:
dataflow:>stream create --definition "http | multibindertransform --expression=payload.toUpperCase() | log" --name mystream
dataflow:>stream deploy mystream --properties "app.http.spring.cloud.stream.bindings.output.binder=rabbit1,app.multibindertransform.spring.cloud.stream.bindings.input.binder=rabbit1,
app.multibindertransform.spring.cloud.stream.bindings.output.binder=kafka1,app.log.spring.cloud.stream.bindings.input.binder=kafka1"可以通过部署属性指定binder配置属性,从而覆盖任何binder配置属性。
Last updated
Was this helpful?