功能性结合名称
与之前版本 spring-cloud-stream 中使用的基于注释支持(遗留)要求的显式命名不同,函数式 编程模型在绑定名称时默认遵循简单的惯例,从而大大简化了应用程序的配置。 让我们来看第一个例子:
@SpringBootApplication
public class SampleApplication {
@Bean
public Function<String, String> uppercase() {
return value -> value.toUpperCase();
}
}
在前面的例子中,我们有一个应用程序,只有一个函数作为消息处理。作为功能它有一个
输入和输出。
用于命名输入和输出绑定的命名规范如下:
-
输入-
<functionName> + -in- + <index> -
输出-
<functionName> + -out- + <index>
这在和外对应于绑定类型(如输入或输出)。
这指数是输入或输出绑定的索引。对于典型的单一输入/输出函数,该值总是为0,
所以它只适用于具有多个输入和输出参数的函数。
比如说,如果你想把这个函数的输入映射到远程节点 目标(例如、主题、队列等)称为“我的主题”,你可以用以下属性来实现:
--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,
你显然关联了 的输入大写函数示例主题目的地。 |
有关属性和其他配置选项的更多信息,请参见配置选项部分。