[开源] 写一次代码,适配 6 种 MQ? Go 统一消息中间件适配层 正式版发布

1 月 20 日
 lixikei

在 Go 业务开发中,我们经常遇到这样的场景:

为了解决这些痛点,我发起了 Unified MQ Broker for Go 项目。它就像是 MQ 领域的 "DBAL"(类似于 SQL 领域的 GORM 或数据库驱动层),让你通过一套 API 就能无缝切换多种消息中间件。

🚀 v0.2.0 重磅更新

经过一段时间的打磨,我们刚刚发布了 v0.2.0 版本。这次更新不只是增加了驱动,更是在“健壮性”和“性能”上做了深度优化:

1. 🛡️ 独创“选项追踪” (Option Tracking)

2. ⚡ 高性能“智能序列化” (Smart Serialization)

3. 🏗️ 延迟绑定 (Late Binding)

4. 🌐 全平台支持

目前已完美支持:RocketMQ, Kafka, RabbitMQ, NATS, AWS SQS, GCP Pub/Sub


💻 核心代码预览

无论底层是哪种 MQ ,你的业务代码只需要关心这一套统一逻辑:

import "github.com/qvcloud/broker"

// 切换驱动只需要换一行初始化,业务代码 0 改动
b := rabbitmq.NewBroker(broker.Addrs("amqp://..."))
b.Connect()

// 注入统一的中间件(如 OpenTelemetry 链路追踪)
b.Init(broker.Middleware(otel.Middleware))

// 统一的订阅 API
b.Subscribe("orders.created", func(ctx context.Context, event broker.Event) error {
    fmt.Println("收到订单:", string(event.Message().Body))
    return nil // 返回 nil 自动 Ack ,返回 error 自动 Nack/Retry
})

// 统一的发布 API
b.Publish(context.Background(), "orders.created", &broker.Message{
    Body: []byte(`{"id": 1001}`),
})

传送门

GitHub: https://github.com/qvcloud/broker

如果你也深受 MQ 适配之苦,或者想为你的分布式系统寻找一个更规范的通信抽象,欢迎来试用、吐槽或贡献代码!如果你觉得不错,给个 Star 就是最大的支持。 🌟

951 次点击
所在节点    分享创造
6 条回复
chennqqi
1 月 20 日
有点意思,不过似乎一般中写个 adapter 或者让 AI 写一个也不难,但有直接可用的了,点赞!
best9999
1 月 20 日
没有指定开源协议,是保留一切权利吗?
misaka19000
1 月 20 日
这种没经过长时间线上考验的库,谁敢用
Need4more
1 月 20 日
用 java 的 spring cloud stream 吧,很成熟了
Dganzh
1 月 21 日
不支持 Redis ?
lixikei
1 月 21 日
@chennqqi 大部分是 ai 写的 ai 规划的 我把 specs 目录都提交了 😄
@best9999 随便用啊 怕啥
@misaka19000 我自己用咯
@Dganzh 今天让 ai 分析一下 加还是不加
@Need4more 抱歉 我是 go 阵营的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1187164

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX