|
该版本仍在开发中,尚未被视为稳定。对于最新稳定版本,请使用 spring-cloud-stream 5.0.0! |
功能性结合名称
与之前版本 spring-cloud-stream 中基于注释支持(遗留)要求的显式命名不同,函数式编程模型在绑定名称时默认采用简单的约定,从而大大简化了应用程序的配置。让我们来看第一个例子:
@SpringBootApplication
public class SampleApplication {
@Bean
public Function<String, String> uppercase() {
return value -> value.toUpperCase();
}
}
在前面的例子中,我们有一个应用程序,只有一个函数,作为消息处理。作为功能它有一个输入和输出。用于命名输入和输出绑定的命名规范如下:
-
输入-
<functionName> + -in- + <index> -
输出-
<functionName> + -out- + <index>
这在和外对应于绑定类型(如输入或输出)。 这指数是输入或输出绑定的索引。对于典型的单一输入/输出函数,索引总是0,因此它仅适用于具有多个输入和输出参数的函数。
例如,如果你想将该函数的输入映射到一个远程目的地(例如,主题、队列等),称为“my-topic”,你可以用以下属性来实现:
--spring.cloud.stream.bindings.uppercase-in-0.destination=my-topic
注意0大写作为物业名称中的一段使用。同理大写输出0.
描述性装订名称
有时为了提高可读性,你可能想给绑定起一个更具描述性的名称(比如“账户”、“命令”等)。另一种看法是,你可以将隐式绑定名映射到显式绑定名。你可以用spring.cloud.stream.function.bindings.<binding-name>财产。 这一特性还为依赖自定义接口的现有应用程序提供了迁移路径绑定,这些绑定需要显式名称。
例如
--spring.cloud.stream.function.bindings.uppercase-in-0=input
在前面的例子中,你映射并有效地重命名了0大写绑定名称为输入. 现在所有配置属性都可以指输入改为绑定名称(例如,--spring.cloud.stream.bindings.input.destination=my-topic).
虽然描述性绑定名称可能提升配置的可读性,但它们也会产生另一种误导性,因为将隐式绑定名映射到显式绑定名。而且由于所有后续配置属性都会使用显式绑定名,你必须始终将这个“绑定”属性引用为对应它实际对应的函数。我们认为,在大多数情况下(函数组合除外)这可能有些过于复杂,因此我们建议完全避免使用它,尤其是因为不使用它会在绑定器目的地和绑定名之间形成一条清晰的路径,例如spring.cloud.stream.bindings.uppercase-in-0.destination=sample-topic, 你显然关联了 的输入大写函数示例主题目的地。 |
有关属性和其他配置选项的更多信息,请参见配置选项部分。