|
这个版本仍在开发中,尚未达到稳定状态。要使用最新稳定版,请使用 spring-cloud-stream 5.0.1 ! |
显式绑定创建
本节介绍了显式创建绑定的声明方式。框架还为程序化方式创建绑定提供了支持。有关更多信息,请单击 定义新和管理现有绑定
在上一节中,我们解释了绑定是如何隐式创建的,由您的应用程序提供的Function、Supplier或Consumer个 bean 的名称驱动。
但是,有时您可能需要显式创建绑定,这些绑定不受任何功能约束。这通常用于通过StreamBridge支持与其他框架的集成。
Spring Cloud Stream 允许你通过 spring.cloud.stream.input-bindings 和 spring.cloud.stream.output-bindings 属性显式地定义输入和输出绑定。请注意到这些属性名是复数形式,这意味着你可以通过使用 ; 作为分隔符来定义多个绑定。
现在就看下面这个测试用例吧。
@Test
public void testExplicitBindings() {
try (ConfigurableApplicationContext context = new SpringApplicationBuilder(
TestChannelBinderConfiguration.getCompleteConfiguration(EmptyConfiguration.class))
.web(WebApplicationType.NONE)
.run("--spring.jmx.enabled=false",
"--spring.cloud.stream.input-bindings=fooin;barin",
"--spring.cloud.stream.output-bindings=fooout;barout")) {
. . .
}
}
@EnableAutoConfiguration
@Configuration
public static class EmptyConfiguration {
}
如您所见,我们已经声明了两个输入绑定和两个输出绑定,而我们的配置中没有定义任何函数,但我们仍然能够成功创建这些绑定并访问其相应的通道。
Unlike with Functional Binding Names, explicitly created bindings
do not require additional suffix such as in-0/out-0 given that: |
-
绑定名称没有由函数支持
-
它已经通过定义表示输入或输出绑定。
-
它不能有多个输入或输出。
所以 spring.cloud.stream.output-bindings=hello 会生成绑定名称为 hello(不是 hello-out-0),然后你可以进一步将其称为 spring.cloud.stream.bindings.hello.destination=foobar