[开源软件] [MQ Studio] 把自己的 RocketMQ 客户端推倒重做成了通用消息队列客户端
先是 rocket-leaf
年初的时候手上几套 RocketMQ 要看,测试、预发、生产,还有客户现场那套。 每套后面都得挂一个 rocketmq-dashboard:JVM 常驻着、端口要开、外网走跳板机, 还得有人记得它挂没挂。查一条消息之前先要确认控制台自己是活的。
所以就打算找一个好用的客户端/面板,降低我的运维成本,但是搜罗了一大圈,只找到了一个需要付费的客户端,再就是官方的这个 dashboard ,Java 开发的资源开销大就算了,上古 UI 我是是真的难绷(颜值也是生产力的一部分),于是便萌发了自己写一套开源的想法。
开源之前就打算使用 wails3 开发客户端,就去找 golang 相关的库,又是找了一圈,官方开源的 golang 库是只有使用相关的接口,运维管理的接口大部分都没有,真的是一波三折,跟 Claude 讨论了下,这个接口本质上就是手搓的 TCP 协议,那也没啥呀,说干就干,按照 Java 版的全接口,开发了一版 Golang 的,先把基建打好方便我后面的开发,这个库也开源了
Github: https://github.com/amigoer/rocketmq-admin-go
说个插曲,上上周正在上班的时候收到一个邮件,看了下原来是 DBX 的作者,跟我说要接入我的这个 RocketMQ 的管理库,也是受宠若惊了,感谢 DBX 大佬的支持。
然后 Rocket-Leaf 就横空出世了,装上就用,写完自己用得挺舒服,边修 issue 边发版,一路发到 v0.1.3 。
然后有人来问
用的人慢慢多起来之后,也开始慢慢有人给我项目提 issue 了,非常的开心。但是有个人给我发邮件问我能不能也支持一下 Kafka / RabbitMQ / Pulsar ?
我最开始的想法很朴素:加个判断,把 Kafka 塞进去就行了。
真去动手才发现不行。rocket-leaf 从上到下都是照着 RocketMQ 的概念长出来的 —— NameServer 、消费组、位点、死信队列,这些词直接写死在页面里、写死在状态里、写死在每一次请求里。想塞第二种 MQ ,就得在每一个页面里散着写 if ,塞第三种的时候这些 if 会互相打架。
再想到后面接入的 MQ 可能不止这两三种,干脆直接重构了,不然越堆越屎了,趁现在功能还不多。
推到重来
虽然说是推到重来了,但是第一版本其实目前还是只支持 RocketMQ ,但是有了好的架构,已经开始排期接入其他 MQ 进来了,也希望大家有需求的话可以使用一下,多提 Issue ,感谢!
为了符合现在的架构,就改名 MQ Studio,版本号从 v0.1.3 退回 v0.0.1 重新开始 —— 因为它确实是个新东西,不是改个名接着往下发。
GitHub: https://github.com/amigoer/mq-studio


接入计划
| 驱动 | 状态 |
|---|---|
| RocketMQ 4.x / 5.x | ✅ 已完整落地 |
| RabbitMQ | 🚧 驱动写完了,页面在接 |
| Kafka | 📋 下一个 |
| Pulsar / NATS / MQTT / SQS / Pub-Sub / Service Bus 等 | 📋 排队中 |
所以目前的版本能连上的还是只有 RocketMQ,界面上其他协议可见但禁用。
绕了一圈回到原点,但是这并不代表没有进步,给其他 MQ 预留好了位置,接入也只是时间问题了。
发布
今天开发完测试好,也就把版本号重置了,从 V0.0.1 从头开始了
下载
https://github.com/amigoer/mq-studio/releases
最后欢迎大家前来体验,给一些体验反馈,也非常愿意持续维护和优化这个项目的,也希望大家给个 Star ,非常感谢 🙏