# 批量文件作业受理与部分补交 [完整源码](../../examples/batch/main.go) 使用独立Go SDK,不导入服务端模型或数据库驱动。它演示受理与取消,不启动Worker或转换真实文件。 ## 前置与运行 使用已迁移的MySQL和当前服务。开发凭据需要 `queues:manage/read`、`tasks:submit/read/cancel` 和当前命名空间全部队列范围;标准bootstrap默认具备这些权限。只在专用开发命名空间运行。 仓库根目录中,先通过环境配置专用 `ORBIT_MYSQL_DSN`: ```sh go run ./cmd/orbit-migrate up mkdir -p .local chmod 700 .local go run ./cmd/orbit-admin bootstrap \ --application batch-demo --namespace default --environment development \ --queue files --output .local/batch.credentials.json go run ./cmd/orbit ``` 另开终端: ```sh cd examples ORBIT_URL=http://127.0.0.1:8080 \ ORBIT_CREDENTIALS_FILE=../.local/batch.credentials.json \ go run ./batch ``` 也接受ORBIT_TOKEN,环境值优先。示例自行创建并暂停一个独立队列,未终结上限为2,不改变已有队列或应用配置。前置应用剩余额度至少2。 ## 调用链与输出 1. 三项文件引用与精确整数输入,使用三个稳定键一次提交。 2. 前两项受理,第三项QUEUE_FULL;整批重报确认前两项ID不变且去重。 3. 查询并取消第一项释放额度,仅以第三项原键和原参数补交。 4. 取消剩余两项,核对unfinished=0,队列保持暂停。 ```text accepted=2 rejected=1 code=QUEUE_FULL replayed=2 same_task_ids=true retried_items=1 same_identity=true accepted=true queue=<实际32位ID> paused=true unfinished=0 ``` 每项总时限60秒,示例总调用上下文20秒。所有响应都校验,失败非零退出且不打印token或业务参数。网络异常时示例直接报错,不循环生成新身份;真正生产发送器应从业务库恢复原身份再核对。示例每次运行生成独立身份,**不是持久化业务Outbox实现**。 正常完成保留已取消任务、队列和审计,不硬删除。异常中断可能留下任务;恢复扫描器按总时限处理,示例不能保证强杀后的主动清理。对有外部副作用的真实任务仍需核查执行状态。 [真实SDK回归](../../sdk/go/batch_integration_test.go) 还通过HTTP代理在服务已返回受理回执后强制断线,再用原身份重报,确认没有重复任务。全部失败分类、部分提交与单项/批量互通见 [接口手册](../api/batch-tasks.md)。