此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 spring-cloud-stream 4.1.4spring-doc.cadn.net.cn

功能绑定名称

与以前版本的 spring-cloud-stream 中使用的基于注释的支持(遗留)所需的显式命名不同,函数 编程模型在绑定名称时默认为简单的约定,从而大大简化了应用程序配置。 让我们看一下第一个例子:spring-doc.cadn.net.cn

@SpringBootApplication
public class SampleApplication {

	@Bean
	public Function<String, String> uppercase() {
	    return value -> value.toUpperCase();
	}
}

在前面的示例中,我们有一个应用程序,其中包含一个充当消息处理程序的函数。作为Function它有一个 输入和输出。 用于命名输入和输出绑定的命名约定如下:spring-doc.cadn.net.cn

inout对应于绑定的类型(如 InputOutput)。 这index是输入或输出绑定的索引。对于典型的单个输入/输出功能,它始终为 0, 因此,它仅与具有多个输入和输出参数的 Function 相关。spring-doc.cadn.net.cn

因此,例如,如果您想将此函数的输入映射到远程 destination (例如,主题、队列等) 命名为 “my-topic”,您可以使用以下属性执行此作:spring-doc.cadn.net.cn

--spring.cloud.stream.bindings.uppercase-in-0.destination=my-topic

请注意作方法uppercase-in-0用作属性名称中的段。这同样uppercase-out-0.spring-doc.cadn.net.cn

描述性绑定名称spring-doc.cadn.net.cn

有时为了提高可读性,您可能希望为绑定指定一个更具描述性的名称(例如 'account'、'orders' 等)。 另一种看待它的方法是,您可以将隐式绑定名称映射到显式绑定名称。你可以用spring.cloud.stream.function.bindings.<binding-name>财产。 此属性还为依赖于基于自定义接口的现有应用程序提供了迁移路径 需要显式名称的绑定。spring-doc.cadn.net.cn

--spring.cloud.stream.function.bindings.uppercase-in-0=input

在前面的示例中,您映射并有效地重命名了uppercase-in-0binding name 设置为input.现在所有配置 properties 可以引用inputbinding name 代替(例如--spring.cloud.stream.bindings.input.destination=my-topic).spring-doc.cadn.net.cn

虽然描述性绑定名称可以增强配置的可读性,但它们也会创建 通过将隐式绑定名称映射到显式绑定名称来造成另一层误导。并且由于所有后续的 配置属性将使用显式绑定名称,您必须始终引用此 'bindings' 属性 关联它实际对应的函数。我们相信,在大多数情况下(函数式组合除外) 这可能有点矫枉过正,因此,我们建议完全避免使用它,尤其是 由于不使用它在 Binder 目标和绑定名称之间提供了一条清晰的路径,例如spring.cloud.stream.bindings.uppercase-in-0.destination=sample-topic, 其中,您清楚地将uppercase函数设置为sample-topic目的地。

有关属性和其他配置选项的更多信息,请参阅 配置选项 部分。spring-doc.cadn.net.cn