2.5 KiB
2.5 KiB
批量文件作业受理与部分补交
完整源码 使用独立Go SDK,不导入服务端模型或数据库驱动。它演示受理与取消,不启动Worker或转换真实文件。
前置与运行
使用已迁移的MySQL和当前服务。开发凭据需要 queues:manage/read、tasks:submit/read/cancel 和当前命名空间全部队列范围;标准bootstrap默认具备这些权限。只在专用开发命名空间运行。
仓库根目录中,先通过环境配置专用 ORBIT_MYSQL_DSN:
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
另开终端:
cd sdk/go
ORBIT_URL=http://127.0.0.1:8080 \
ORBIT_CREDENTIALS_FILE=../../.local/batch.credentials.json \
go run ./examples/batch
也接受ORBIT_TOKEN,环境值优先。示例自行创建并暂停一个独立队列,未终结上限为2,不改变已有队列或应用配置。前置应用剩余额度至少2。
调用链与输出
- 三项文件引用与精确整数输入,使用三个稳定键一次提交。
- 前两项受理,第三项QUEUE_FULL;整批重报确认前两项ID不变且去重。
- 查询并取消第一项释放额度,仅以第三项原键和原参数补交。
- 取消剩余两项,核对unfinished=0,队列保持暂停。
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回归 还通过HTTP代理在服务已返回受理回执后强制断线,再用原身份重报,确认没有重复任务。全部失败分类、部分提交与单项/批量互通见 接口手册。