1.9 KiB
1.9 KiB
独立 MySQL Inbox 示例
这是接收方应用示例,使用正式 Orbit Go SDK 和自己的 MySQL 数据库。核心 SDK 不依赖数据库驱动;示例是独立 Go module,通过本地 replace 引用 SDK。
完整前置、调用、输出、故障处理与事务边界见 运行手册。
先按运行手册创建带 --event-access 的专用平台凭据及独立空业务库。从仓库根目录执行(DSN 替换为实际配置):
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 在重启和多实例之间保持固定。
业务事务 同时写入 Inbox 与视图,两张表、17个中文字段注释、零外键。模型见 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 替代持续消费。