feat: add precise task business key and creation time queries
This commit is contained in:
@@ -146,3 +146,10 @@
|
||||
- 预期:原任务FAILED、新任务SUCCEEDED,原尝试和审计保留;管理凭据显式--recovery-access。
|
||||
- 异常:真实HTTP在核查/重试提交后丢响应,原身份恢复同一审计和新任务;迟到成功只进入证据。
|
||||
- 范围:本例不操作外部系统,不能替代真实证据核查、业务幂等或持久化管理操作Outbox。
|
||||
|
||||
## 已可运行:业务键和创建时间查询
|
||||
|
||||
- 源码:[task-query](../../sdk/go/examples/task-query/main.go),[完整启动与异常说明](task-query.md)。
|
||||
- 步骤:提交三个模拟任务 → 精确业务键及时间范围过滤 → 每页一条遍历 → 验证上界排除 → 取消收尾。
|
||||
- 预期:matched=2、pages=2、before_excluded=true、cancelled=3。
|
||||
- 范围:普通提交/读取/取消权限;不调用外部系统、不启动Worker,所有历史保留,状态分页不是数据库快照。
|
||||
|
||||
36
docs/examples/task-query.md
Normal file
36
docs/examples/task-query.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# 业务键与时间范围查询示例
|
||||
|
||||
源码:[task-query/main.go](../../sdk/go/examples/task-query/main.go)。本例提交三个模拟对象任务,不启动Worker,演示精确业务键、创建时间区间和任务摘要分页。
|
||||
|
||||
## 准备与运行
|
||||
|
||||
按[SDK初始化步骤](../sdk/README.md)迁移数据库、初始化专用开发队列及普通提交/读取/取消凭据,启动当前Orbit服务。从仓库根目录执行:
|
||||
|
||||
```sh
|
||||
cd sdk/go
|
||||
ORBIT_URL=http://127.0.0.1:8080 \
|
||||
ORBIT_CREDENTIALS_FILE=../../.local/development.credentials.json \
|
||||
go run ./examples/task-query
|
||||
```
|
||||
|
||||
也可使用ORBIT_TOKEN与ORBIT_QUEUE_ID,环境值优先。无需额外管理权限,凭据秘密不输出。队列应有至少三个未终结任务空位;每次运行的处理器与业务键带独立标识,避免已有任务干扰。
|
||||
|
||||
## 实际调用与结果
|
||||
|
||||
1. 提交两个完全相同业务键的任务,以及一个只相差尾部空格的任务。业务键含中文、加号、百分号及重音字符。
|
||||
2. 用服务端回执中的CreatedAt设置包含起点、不包含终点的时间范围,避免依赖客户端时钟同步。
|
||||
3. ListTasks按原键、WAITING状态和创建区间查询,每页1条,沿NextCursor遍历;仅匹配前两个任务。
|
||||
4. 将created_before设为第二个任务的精确创建时间,确认它被排除,只剩第一个任务。
|
||||
5. 分别取消本例三个任务,保留任务、受理与取消审计。
|
||||
|
||||
预期输出:
|
||||
|
||||
```text
|
||||
matched=2 pages=2 before_excluded=true cancelled=3
|
||||
```
|
||||
|
||||
重复运行创建新的独立样本。代码没有外部业务副作用,也不删除数据库历史。失败非零退出,可能留下已受理任务;用回执、业务键和时间范围查询后核对,各任务总时限60秒,当前示例没有Worker会进入未开始超时处理。
|
||||
|
||||
完整参数、游标兼容和异常说明见[查询契约](../api/task-queries.md)。翻页时保持所有筛选,发生INVALID_ARGUMENT不要丢弃过滤条件“兜底查全部”。状态变化的跨页结果不是快照,不能当作完整审计导出。
|
||||
|
||||
`make integration` 会在一次性MySQL中运行此示例及实际HTTP SDK回归,验证原键/尾部空格、时间边界、分页、变更条件拒绝,以及取消后创建时间不改变。
|
||||
Reference in New Issue
Block a user