Files
orbit/examples/result-inbox/README.md

27 lines
1.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 独立 MySQL Inbox 示例
这是接收方应用示例,使用正式 Orbit Go SDK 和自己的 MySQL 数据库。核心 SDK 不依赖数据库驱动;示例是独立 Go module,通过本地 replace 引用 SDK。
完整前置、调用、输出、故障处理与事务边界见 [运行手册](../../docs/examples/result-inbox.md)。
先按运行手册创建带 `--event-access` 的专用平台凭据及独立空业务库。从仓库根目录执行(DSN 替换为实际配置):
```sh
export ORBIT_URL=http://127.0.0.1:8080
export ORBIT_CREDENTIALS_FILE="$PWD/.local/inbox.credentials.json"
export ORBIT_RECEIVER_DSN='user:password@tcp(127.0.0.1:3306)/receiver_example'
cd examples/result-inbox
GOWORK=off go run ./cmd/receiver init
GOWORK=off go run ./cmd/receiver demo
```
- `init`:使用 ORBIT_RECEIVER_DSN 初始化专用空数据库,不自动升级已有表。
- `demo`:使用事件凭据和隔离队列产生结果,验证两次业务处理只推进一次,再确认并暂停本次订阅。
- `consume`:消费 ORBIT_SUBSCRIPTION_ID 指定的已有订阅,RECEIVER_NAME 在重启和多实例之间保持固定。
[业务事务](internal/inbox/store.go) 同时写入 [Inbox 与视图](internal/inbox/schema.sql),两张表、17个中文字段注释、零外键。模型见 [model.go](internal/inbox/model.go)。
根目录 `make test/vet/build` 包含本模块;`make integration` 创建独立临时数据库,运行数据库、COMMIT响应丢失、真实消费者强杀回归和demo,结束清理自建容器。未设置集成环境时普通go test跳过外部测试,不表示这些故障已经验证。
预期 demo 输出 `inbox_duplicate=true applied_events=1` 和 `ack_confirmed=1 pending=0`。`init` 仅运行一次;连续消费另行配置持久的 `ORBIT_SUBSCRIPTION_ID`、`RECEIVER_NAME`,再运行 `GOWORK=off go run ./cmd/receiver consume`。完整命令见运行手册;不要用重复运行 demo 替代持续消费。