与以前版本的spring-cloud-stream中使用的基于注释的支持(旧版)所需的显式命名不同,函数 当涉及到绑定名称时,编程模型默认为简单的约定,从而大大简化了应用程序配置。 让我们看第一个例子:Spring中文文档

@SpringBootApplication
public class SampleApplication {

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

在前面的示例中,我们有一个具有单个函数的应用程序,该函数充当消息处理程序。作为一个 它有一个 输入和输出。 用于命名输入和输出绑定的命名约定如下:FunctionSpring中文文档

和 对应于绑定类型(如输入输出)。 是输入或输出绑定的索引。对于典型的单输入/输出功能,它始终为 0, 所以它只与 [具有多个输入和输出参数的函数] 相关。inoutindexSpring中文文档

因此,例如,如果您想将此函数的输入映射到远程 名为“my-topic”的目的地(例如,主题、队列等),您可以使用以下属性来执行此操作:Spring中文文档

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

请注意如何用作属性名称中的段。这同样适用。uppercase-in-0uppercase-out-0Spring中文文档

描述性绑定名称Spring中文文档

有时,为了提高可读性,您可能希望为绑定提供更具描述性的名称(例如“帐户”、“订单”等)。 另一种查看方式是,可以将隐式绑定名称映射到显式绑定名称。你可以用财产来做到这一点。 此属性还为依赖于基于自定义接口的现有应用程序提供迁移路径 需要显式名称的绑定。spring.cloud.stream.function.bindings.<binding-name>Spring中文文档

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

在前面的示例中,您已将绑定名称映射并有效地重命名为 。现在所有配置 属性可以改用绑定名称(例如,)。uppercase-in-0inputinput--spring.cloud.stream.bindings.input.destination=my-topicSpring中文文档

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

有关属性和其他配置选项的更多信息,请参阅 [配置选项] 部分。Spring中文文档