对于最新稳定版本,请使用spring-cloud-stream 5.0.1spring-doc.cadn.net.cn

显式绑定创建

本节介绍了显式创建绑定的声明方式。框架还为程序化方式创建绑定提供了支持。有关更多信息,请单击 定义新和管理现有绑定spring-doc.cadn.net.cn

在上一节中,我们解释了绑定是如何隐式创建的,由您的应用程序提供的FunctionSupplierConsumer个 bean 的名称驱动。spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

但是,有时您可能需要显式创建绑定,这些绑定不受任何功能约束。这通常用于通过StreamBridge支持与其他框架的集成。spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

Spring Cloud Stream 允许你通过 spring.cloud.stream.input-bindingsspring.cloud.stream.output-bindings 属性显式地定义输入和输出绑定。请注意到这些属性名是复数形式,这意味着你可以通过使用 ; 作为分隔符来定义多个绑定。spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

现在就看下面这个测试用例吧。spring-doc.cadn.net.cn

spring-doc.cadn.net.cn

@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 {
}

如您所见,我们已经声明了两个输入绑定和两个输出绑定,而我们的配置中没有定义任何函数,但我们仍然能够成功创建这些绑定并访问其相应的通道。spring-doc.cadn.net.cn

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=foobarspring-doc.cadn.net.cn