Spring AI企业级应用实战(12):异步长任务、队列、回调与可恢复执行
文章摘要
将耗时AI调用从同步接口迁移到任务中心,完成状态机、Outbox、Worker租约、取消传播和Checkpoint。
一、本篇目标
- 持久化任务状态
- 队列削峰
- 进度与SSE
- 回调去重
- 断点恢复
二、为什么Demo方案无法直接进入生产
连接断开不应导致任务丢失,也不能让重复提交制造重复成本。
生产系统需要把模型调用放入完整控制面,而不是让Controller直接拼Prompt、选择模型并处理异常。
三、总体架构
API → TaskService → DB+Outbox → Queue → Worker → Checkpoint
4、任务状态机
任务状态机是本篇生产架构的关键组成部分,需要显式定义输入、输出、状态、错误边界和观测字段。
@Transactional
public String submit(CreateTaskCommand command) {
AiTask task = AiTask.create(command);
taskRepository.save(task);
outboxRepository.save(TaskSubmitted.of(task.id()));
return task.id();
}
5、Outbox发布
Outbox发布是本篇生产架构的关键组成部分,需要显式定义输入、输出、状态、错误边界和观测字段。
@Transactional
public String submit(CreateTaskCommand command) {
AiTask task = AiTask.create(command);
taskRepository.save(task);
outboxRepository.save(TaskSubmitted.of(task.id()));
return task.id();
}
6、Worker租约
Worker租约是本篇生产架构的关键组成部分,需要显式定义输入、输出、状态、错误边界和观测字段。
Checkpoint checkpoint = checkpointRepository.load(taskId);
Step next = workflow.next(checkpoint.completedSteps());
StepResult result = executor.execute(next, checkpoint.state());
checkpointRepository.save(checkpoint.advance(next, result));
7、取消与回调幂等
取消与回调幂等是本篇生产架构的关键组成部分,需要显式定义输入、输出、状态、错误边界和观测字段。
@Transactional
public String submit(CreateTaskCommand command) {
AiTask task = AiTask.create(command);
taskRepository.save(task);
outboxRepository.save(TaskSubmitted.of(task.id()));
return task.id();
}
8、生产治理要求
- 配置、Prompt、模型和数据版本必须进入Trace
- 权限、预算和风险规则由业务代码强制执行
- 外部调用设置全链路Deadline
- 重试与副作用隔离
- 所有关键失败形成可回放样本
9、测试策略
- 确定性领域逻辑单元测试
- 外部Provider契约测试
- 黄金数据集质量评测
- 限流、超时和宕机故障注入
- 灰度与回滚演练
10、上线检查清单
□ 接口契约稳定
□ 租户隔离通过攻击测试
□ 版本可追踪
□ 成本与质量可观测
□ 异常有降级和人工兜底
阶段性验收标准
本篇围绕“Spring AI企业级应用实战(12):异步长任务、队列、回调与可恢复执行”建设的能力,应通过以下验收后再进入下一阶段:
核心接口契约稳定
关键状态可以持久化和恢复
租户、用户和权限边界通过攻击测试
外部超时、限流和宕机有明确降级
模型、Prompt、工具和数据版本可追踪
质量、延迟、成本和错误均可观测
除正常流程外,还应覆盖重复请求、并发更新、部分失败、服务重启、回调乱序、权限撤销和配置回滚。对于包含真实副作用的步骤,必须证明重试和恢复不会重复执行。
生产运行中的持续治理
系统上线后要把线上失败、人工接管和用户负反馈持续回流到测试集。每次模型、Prompt、工具或索引变化都运行同一基线,并通过影子流量或金丝雀验证真实分布。
建议按周复盘高成本任务、重复调用、低置信输出和人工修订原因;按月复审权限、数据保留、模型能力目录和降级策略。企业AI工程不是一次性开发,而是一套持续测量、修正和演进的运行体系。
总结
异步AI任务的可靠性来自持久化状态、幂等消息和可控副作用。
下一篇将继续实现:
Spring AI企业级应用实战(13):测试、黄金数据集与发布质量门禁
延伸阅读
如果你正在关注企业级 AI 应用、Spring AI、RAG、Agent 与大模型工程化落地,欢迎访问 智元界:
https://www.zyentor.com/
智元界将持续分享可运行的技术实战、架构设计、问题排查与企业应用案例。