mochi-mqtt/server golang mqtt 包
最近在学习nats 的mqtt 能力,默认nats mqtt 的实现是3.1.1 的,同时想着集成nanomq 的bridge 进行桥接实现共享订阅的能力,但是发现有一个兼容的问题,似乎是nanomq 在发送3.1.1 协议包的时候,nats mqtt 解析有一些问题(但是nats mqtt 在不同client 测试还是没问忒的),那似乎就是nanomq 实现不太完整了,实际通过抓包发现就是解析的格式上不是很对,然后就想基于golang 自己开发一个类似nanomq bridge 的能力,在查找中发现mochi-mqtt/server 包很不错,默认有mqtt server 实现,同时还能快速的开发bridge (InlineClient 能力)
mochi-mqtt/server 包含的特性
- 完整的mqtt 5 能力,同时兼容3.1.1 以及3.0.0 协议,支持topic 别名,共享订阅等
- 开发友好,支持hooks,以及相对完整的broker 能力,支持InlineClient,可以快速开发bridge
- 高性能以及稳定,通过了paho 的兼容测试
- 支持tcp,websockeete,以及 $SYS 消息
- 内置redis,badger,pebble,bolt 等基于hooks 的持久化
- 内建通过hooks的基于规则的acl处理
说明
mochi-mqtt/server 实现mqtt server 以及bridge 还是比较方便的,后边简单演示下如何集成nats mqtt
参考资料
https://github.com/mochi-mqtt/server
https://github.com/nanomq/nanomq
https://docs.nats.io/running-a-nats-service/configuration/mqtt