4.0 KiB
任务完成与取消双通道回调实现计划
面向 AI 代理的工作者: 在当前会话逐任务实现;步骤使用复选框跟踪。当前工作区存在用户改动,不自动提交、不覆盖无关文件。
目标: 实现 YAML 驱动的 MQ 异步与 Feign 同步完成/取消链路,并在业务成功后统一推进任务最终状态。
架构: Task 操作管理器负责配置分流,execute starter 提供统一 Feign 业务入口,MQ Consumer 在业务处理后回调 Task。最终状态仅由 TransportTaskCallbackService 收口更新。
技术栈: Java 17、Spring Boot、OpenFeign、RocketMQ、MyBatis、JUnit 5
任务 1:补齐 execute starter 的完成与取消入口
文件:
-
修改:
nl-framework/nl-spring-boot-starter-execute/pom.xml -
修改:
nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/api/TaskCommonApi.java -
修改:
nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/api/AbstractTaskCommonApiImpl.java -
创建:
nl-framework/nl-spring-boot-starter-execute/src/test/java/cn/code/nl/framework/execute/biz/api/AbstractTaskCommonApiImplLocalSpringTest.java -
编写 Spring 集成测试,调用
doHandleFinished、doHandleCancelled并断言测试任务处理器收到正确 taskId 与 payload。 -
运行定向测试,确认因接口缺失而失败。
-
在
TaskCommonApi和公共实现中增加两个接口,复用现有execute路由。 -
重跑定向测试并确认通过。
任务 2:增加 YAML 模式分流并统一同步状态收口
文件:
-
创建:
nl-module-task/nl-module-task-api/src/main/java/cn/code/nl/module/task/enums/TaskCallbackTypeEnum.java -
修改:
nl-module-task/nl-module-task-server/src/main/resources/application.yaml -
修改:
nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/manage/TransportTaskOperationManager.java -
修改:
nl-module-task/nl-module-task-server/src/main/java/cn/code/nl/module/task/service/transporttask/TransportTaskCallbackServiceImpl.java -
定义
mq、feign配置枚举及严格解析方法。 -
为 Task 服务增加
nl.task.callback-type: mq。 -
将完成、取消共同的待处理状态保存后,按配置选择事务后发 MQ 或同步调用
TaskCommonApi。 -
Feign 成功后构造成功回调请求并调用
TransportTaskCallbackService。 -
删除字符串状态码的错误格式化,直接使用枚举 code。
任务 3:补齐 MQ 成功与失败回调
文件:
-
修改:
nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/mq/consumer/LmsTaskStatusChangeConsumer.java -
修改:
nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/mq/consumer/WmsTaskStatusChangeConsumer.java -
完成或取消业务正常结束后,通过
TransportTaskApi.receiveCallbackResult回调SUCCESS并检查返回结果。 -
业务异常时回调
FAILED记录异常信息,再抛出原异常触发 MQ 重试。 -
未找到处理器时抛出异常,避免消息被确认后任务永久停留在待处理状态。
-
统一事件标识并使用 Redis 成功标识隔离业务执行与成功回调重试。
任务 4:验证与审查
文件:
-
检查:以上全部生产与测试文件
-
运行 execute starter 定向 Spring 集成测试。
-
编译 execute starter、task-api、task-server、lms-server、wms-server 及依赖模块。
-
检查 git diff,确认没有覆盖工作区既有改动。
-
按 Java 规范检查中文注释、
@Resource注入、Feign 返回值检查及异常日志。
最终验证结果
- execute starter 4 个 Spring 定向测试通过。
- task-api 3 个业务归属与 Topic 映射 Spring 定向测试通过。
- Execute、Task、LMS、WMS 及依赖共 33 个模块编译通过。
- 聚合启动工程
nl-server及依赖共 38 个模块编译通过。 git diff --check通过,仅有工作区行尾转换提示。