Spring Boot 实现 SSE 流式输出与智能体实时响应

SSE(Server-Sent Events)是一种基于 HTTP 的轻量级协议,允许服务器向客户端推送实时数据。结合 Spring Boot 和智能体(如 AI 模型或业务逻辑处理器),可以实现高效的流式响应,适用于聊天机器人、实时监控等场景。


核心概念与原理

SSE 通过长连接实现单向数据推送,客户端通过 EventSource API 监听事件流。Spring Boot 提供了 SseEmitter 类简化 SSE 实现,支持异步非阻塞响应。

智能体通常指封装了 AI 模型或复杂业务逻辑的组件,通过流式输出逐步返回计算结果,避免客户端长时间等待。


Spring Boot 实现 SSE 服务端

依赖配置

确保 pom.xml 包含 Spring Web 依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
控制器实现

创建控制器类,使用 SseEmitter 管理连接:

@RestController
@RequestMapping("/sse")
public class SseController {

    private final Map<String, SseEmitter> emitters = new ConcurrentHashMap<>();

    @GetMapping("/connect")
    public SseEmitter connect(@RequestParam String clientId) {
        SseEmitter emitter = new SseEmitter(30_000L); // 超时设置为30秒
        emitters.put(clientId, emitter);

        emitter.onCompletion(() -> emitters.remove(clientId));
        emitter.onTimeout(() -> emitters.remove(clientId));

        return emitter;
    }

    @PostMapping("/send")
    public void sendMessage(@RequestParam String clientId, @RequestBody String message) {
        SseEmitter emitter = emitters.get(clientId);
        if (emitter != null) {
            try {
                emitter.send(SseEmitter.event()
                        .data(message)
                        .name("ai-response"));
            } catch (IOException e) {
                emitter.completeWithError(e);
            }
        }
    }
}

智能体集成与流式响应

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐