feat: auto configure console queue

This commit is contained in:
2026-09-21 03:49:38 +08:00
parent 3c8a9ac47c
commit 45a2b361f2
7 changed files with 77 additions and 10 deletions

View File

@@ -65,6 +65,7 @@ docker run --rm \
docker run --rm \
--env ORBIT_MYSQL_DSN \
--env ORBIT_HTTP_ADDR=0.0.0.0:8080 \
--env ORBIT_CONSOLE_QUEUE_ID=queue_xxx \
--env ORBIT_RUNTIME_BATCH_LIMIT=100 \
--env ORBIT_WORKFLOW_TICK_INTERVAL=1s \
--env ORBIT_SCHEDULE_TICK_INTERVAL=1s \
@@ -79,6 +80,8 @@ docker run --rm \
registry.example/orbit:dev
```
`ORBIT_CONSOLE_QUEUE_ID` 是控制台的可选默认队列范围,只用于打开 `/console/` 时预填队列 ID,不是认证凭据。服务端仍要求业务请求携带有权限的 Bearer Token;多队列部署可以省略此变量,改为在浏览器选择凭据 JSON,由其中的 `queue_id` 自动填充。
生产编排应先完成迁移和 `verify`,再启动新节点。服务收到 `SIGTERM` 后停止接收新连接并在有限窗口内关闭 HTTP、WebSocket 和后台循环;编排器的终止宽限期必须覆盖该窗口。启动后才能把节点加入流量池。
## 3. 探针和监听边界

View File

@@ -9,7 +9,7 @@ http://127.0.0.1:8080/console/
## 当前能力
- 读取 `/health/live`、`/health/ready` 和 `/version` 展示服务、Schema 与工具链状态。
- 通过用户选择的本地凭据 JSON 或手工 Token/队列 ID 调用现有授权 API。
- 通过用户选择的本地凭据 JSON 或手工 Token/队列范围调用现有授权 API;队列范围优先从凭据 JSON 或服务端默认配置自动填充。
- 展示任务、定时计划、流程实例和结果订阅的最近摘要。
- 点击任务查看任务详情、执行尝试时间线、最终结果和操作审计摘要。
- 在具备对应权限时提交任务取消和安全重试,沿用服务端的版本校验、幂等键、队列范围和审计规则。
@@ -31,7 +31,15 @@ http://127.0.0.1:8080/console/
http://127.0.0.1:8080/console/
```
点击“选择凭据 JSON”,选择 `orbit-admin bootstrap` 生成的私有凭据文件,例如 `.local/local.credentials.json`,再点击“连接”。文件只在浏览器内解析,Token 保留在当前页面会话中,不写入 Orbit 数据库。
启动 Orbit 后,API 地址默认使用当前控制台页面所在的地址,不需要手工填写。点击“选择凭据 JSON”,选择 `orbit-admin bootstrap` 生成的私有凭据文件,例如 `.local/local.credentials.json`,队列范围和 Token 会自动读取,再点击“连接”。浏览器不能在没有用户选择的情况下读取本机文件,这是浏览器的安全边界;文件只在当前页面内解析,Token 不会上传到 Orbit Console,也不写入 Orbit 数据库。
如果一个部署只服务一个默认队列,可以在服务端配置队列范围,页面打开后会自动使用它:
```sh
export ORBIT_CONSOLE_QUEUE_ID='queue_xxx'
```
`GET /console/config` 只返回这个非敏感的默认队列 ID,不返回 Token、不读取数据库。凭据 JSON 中的 `queue_id` 优先级更高,可以覆盖默认值。没有队列配置时仍可查看健康和版本;读取任务、计划、流程及订阅需要同时提供 Bearer Token 和队列范围。平台不会根据 Token 猜测队列,因为一个 Token 可能被授予多个队列,自动猜测会造成数据范围错误。
## 安全边界