x/messaging/pubsub · x/messaging/mq Primer
x/messaging/pubsub · x/messaging/mq Primer
Section titled “x/messaging/pubsub · x/messaging/mq Primer”实验性 — API 兼容性未冻结。采用前请先评估。查看发布策略了解当前成熟度。
当你已经通过 x/messaging Primer 确认问题明确属于进程内发布订阅 broker 基础元语(x/messaging/pubsub)或持久化队列任务协调(x/messaging/mq)时,打开这一页。两者都是 x/messaging 能力家族内的下级包。
x/messaging/pubsub — 发布订阅 Broker 基础元语
Section titled “x/messaging/pubsub — 发布订阅 Broker 基础元语”x/messaging/pubsub 负责进程内主题扇出、broker 基础元语和调试友好的 broker 支持。它被 x/messaging、x/messaging/webhook(用于 pub-sub 到 HTTP 桥接)和 x/observability/devtools(用于本地 broker 检查)消费。
什么时候从这里开始
Section titled “什么时候从这里开始”- 你正在实现或修改主题扇出 broker 行为(
broker.go) - 你正在添加消费者组协调或竞争消费者投递(
consumergroup.go) - 你正在构建确认、背压或死信队列支持(
ack.go、backpressure.go、dlq.go) - 你正在为传输中的消息添加去重(
dedup.go) - 你正在构建分布式 pubsub 适配器(
distributed.go)
什么时候不该从这里开始
Section titled “什么时候不该从这里开始”- 工作是面向应用的消息功能发现 — 从 x/messaging Primer 开始
- 改动关于 pubsub 事件的 HTTP webhook 投递 — 那属于
x/messaging/webhook - 工作引入通过 package init 注册的全局 broker — broker 必须显式注入
先读哪些文件
Section titled “先读哪些文件”x/messaging/pubsub/module.yamlx/messaging/pubsub/broker.gox/messaging/pubsub/consumergroup.gox/messaging/pubsub/ack.go
x/messaging/mq — 持久化队列基础元语
Section titled “x/messaging/mq — 持久化队列基础元语”x/messaging/mq 负责持久化队列实现、任务持久化、worker 协调、死信处理和队列去重适配器。它为 x/messaging 和 x/messaging/scheduler 在其上协调提供队列底层。
什么时候从这里开始
Section titled “什么时候从这里开始”- 你正在实现或修改持久化任务队列行为(
broker.go、persistence.go) - 你正在添加失败任务的死信队列处理(
deadletter.go) - 你正在构建队列任务的去重适配器(
dedupe.go、dedupe_kv.go、dedupe_sql.go) - 你正在实现优先级队列调度(
priority.go) - 你正在为任务投递添加确认语义(
ack.go)
什么时候不该从这里开始
Section titled “什么时候不该从这里开始”- 工作是面向应用的消息功能发现 — 从 x/messaging Primer 开始
- 改动关于 cron 或延迟任务调度 — 那属于
x/messaging/scheduler - 工作引入业务工作流编排 — 保留在应用代码中
- 改动需要稳定根入口点
先读哪些文件
Section titled “先读哪些文件”x/messaging/mq/module.yamlx/messaging/mq/broker.gox/messaging/mq/persistence.gox/messaging/mq/deadletter.go
为什么这一页同时覆盖两个包
Section titled “为什么这一页同时覆盖两个包”x/messaging/pubsub 和 x/messaging/mq 都是 x/messaging 的下级包,但属于不同层:x/messaging/pubsub 处理扇出投递语义;x/messaging/mq 处理持久化任务存储和 worker 协调。将它们分开防止耦合——只需要扇出的事件不需要持久化,而持久化任务队列不需要主题扇出语义,除非被显式桥接。