125. Building 和 Running Function

上面的 sample @SpringBootApplication有一个 function,可以在运行时通过 Spring Cloud Function 作为 HTTP 端点或 Stream 处理器进行修饰,例如使用 RabbitMQ,Apache Kafka 或 JMS。

@Beans可以是FunctionConsumerSupplier(全部来自java.util),它们的参数类型可以是 String 或 POJO。如果spring-cloud-function-stream在 classpath 上,Function将作为 Spring Cloud Stream Processor公开。 Consumer也作为流Sink公开,Supplier公开转换为流Source。如果 Stream binder 是spring-cloud-stream-binder-servlet,则会公开 HTTP endpoints。

函数可以是Flux<String>Flux<Pojo>和 Spring Cloud Function 负责将数据转换为所需类型的数据,如同纯文本或(在 POJO 的情况下)JSON 一样。 TBD:支持Flux<Message<Pojo>>和可能是普通的Pojo类型(由 framework 暗示和实现的 Fluxes)。

函数可以在单个 application 中组合在一起,也可以部署 one-per-jar。这取决于开发人员的选择。具有多种功能的应用程序可以在不同的“个性”中多次部署,从而在不同的物理传输上暴露不同的功能。