SuperAPI AI 工具集

webflux-reactive-patterns

编程与开发

查看项目

更新于 10-16 02:32

技能介绍

用途:当 Spring Boot 3 的完整请求路径都适合非阻塞 I/O 时,使用 WebFlux 与 Reactor 构建响应式服务。

主要能力与规则:控制器返回 Mono 或 Flux,不在请求处理代码中调用 subscribe();按顺序需求使用 map、flatMap、concatMap、zip 组合任务;把阻塞的 JDBC、文件系统与旧版 SDK 调用移出事件循环线程,无法避免时在窄适配边界用 boundedElastic 隔离;在远程调用边界设置超时并保留取消语义。

上下文与错误:请求级元数据放入 Reactor Context 而非 ThreadLocal;集中转换领域失败,不吞掉取消或基础设施错误;仅在存在明确回退时使用 onErrorResume;避免 onErrorContinue。

持久化与流式:用 R2DBC 做响应式数据库访问,JDBC 会使管道阻塞;为扇出操作限制并发;为流式端点定义背压与缓冲上限;避免把无界 Flux 收集进内存。

测试:用 StepVerifier 验证发布者行为,用 WebTestClient 验证 HTTP 契约;覆盖取消、超时、空结果、错误、顺序与背压;项目支持时开启阻塞调用检测。

示例文件:examples/good-reactive-service.java 与 examples/bad-reactive-service.java。

常见错误:在控制器或服务中调用 block();手动 subscribe();把租户或安全数据放进 ThreadLocal;使用无界 flatMap;用 Mono.just 包装 JDBC(仍会阻塞调用线程)。

限制:资料未提供安装命令、版本要求、收费与平台信息。