# serverless-framework **Repository Path**: sagi/serverless-framework ## Basic Information - **Project Name**: serverless-framework - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-19 - **Last Updated**: 2025-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #### 一、函数式编程配置 ```yaml spring: cloud: stream: function: definition: printMessageAutoCommit bindings: printMessageAutoCommit-in-0: destination: input-topic ``` >面向函数式编程模型(Functional Programming Model),是 Spring Cloud Function 支持的一部分。 通过指定一个函数名(如 uppercase, printMessageAutoCommit),Spring 会自动将该函数绑定到 Kafka 消息流中。 > 特点: 不需要手动编写绑定接口或监听器。 Spring 自动根据函数签名生成输入/输出绑定。 更加简洁,适合 Serverless 架构、事件驱动架构等场景。 函数名后缀 -in-0 表示第一个输入参数的绑定。 #### 二、传统消息驱动编程模型 ```yaml spring: cloud: stream: bindings: input: # 自定义的通道名称 destination: my-topic # Kafka 主题或 RabbitMQ exchange/queue 名称 binder: kafka ``` >需要手动定义接口或使用 @EnableBinding 注解来声明通道(如 Source, Sink, Processor 或自定义接口)。 更加灵活,适合对底层绑定有精细控制需求的场景。 适用于 Spring Boot + Spring Cloud Stream 的传统使用方式。 示例代码如下: ```java public interface MyProcessor { String INPUT = "input"; @Input(INPUT) SubscribableChannel input(); } @Component @EnableBinding(MyProcessor.class) public class MyMessageListener { @Autowired private MyProcessor processor; @PostConstruct public void init() { processor.input().subscribe(message -> { // 处理消息逻辑 }); } } ``` #### 三、推荐方式 > ✅ 推荐使用方式 如果你使用的是 Spring Cloud Function 函数式模型,并希望简化开发流程,请启用 spring.cloud.function.definition,并通过 spring.cloud.stream.function.bindings 配置绑定。 如果你使用的是 传统 Spring Cloud Stream 模型,则继续使用 spring.cloud.stream.bindings 即可。 #### 四、确认模式 ![ActMod的取值范围](doc/img/ack-mode.png)