spring.cloud.stream.source 到底做了什么?

ng.*_*bie 5 java spring spring-boot spring-cloud-stream

我试图了解新的功能模型如何Spring Cloud Streams工作以及配置在幕后如何实际工作。

我无法弄清楚的属性之一是spring.cloud.stream.source.

这个属性实际上意味着什么?

我无法理解文档

请注意,前面的示例没有定义任何源函数(例如,Supplier bean),从而使框架没有触发器来创建源绑定,这对于配置包含函数 bean 的情况来说是典型的。因此,为了触发源绑定的创建,我们使用 spring.cloud.stream.source 属性,您可以在其中声明源的名称。提供的名称将用作创建源绑定的触发器。

如果我不需要怎么办Supplier

源绑定到底是什么?为什么它很重要?

如果我只想生成消息传递主题怎么办?我还需要这个房产吗?

我也无法理解它是如何在此处的示例中使用的。

Gar*_*ell 5

Spring Cloud Stream 查找java.util Function<?, ?Consumer<?>Supplier<?>beans 并为它们创建绑定。

在供应商情况下,框架轮询供应商(默认情况下每秒一次)并发送结果数据。

例如

@Bean
public Supplier<String> output() {
    return () -> "foo";
}
Run Code Online (Sandbox Code Playgroud)
spring.cloud.stream.bindings.output-out-0.destination=bar
Run Code Online (Sandbox Code Playgroud)

每秒发送foo到目的地。bar

但是,如果您不需要轮询源,但想要配置可以向其发送任意数据的绑定,该怎么办?进入spring.cloud.stream.source

spring.cloud.stream.source=output
spring.cloud.stream.bindings.output-out-0.destination=bar
Run Code Online (Sandbox Code Playgroud)

允许您将任意数据发送到流桥

bridge.send("output-out-0", "test");
Run Code Online (Sandbox Code Playgroud)

换句话说,它允许您配置一个或多个可在StreamBridge;中使用的输出绑定。否则,当您发送到网桥时,会动态创建绑定。