
如果你正在用 RabbitMQ但嫌它部署太重、运维组件太多或者单纯想找一个用 Go 写的、单二进制就能跑的消息中间件那 SwiftMQ 值得花十分钟了解一下。SwiftMQ 是一个用 Go 从零实现的 RabbitMQ 兼容消息中间件。它的核心承诺只有一句话你现有的 RabbitMQ 客户端不需要改任何代码、不需要换 SDK只改连接地址就能接入。为什么要做“RabbitMQ 兼容”RabbitMQ 本身并不轻。Erlang 运行时、管理插件、可能需要额外的数据库或 Nginx 做前置这些在开发环境和边缘场景下都是负担。SwiftMQ 的选择是在协议层做到足够兼容让迁移成本降到接近于零在运行时则用 Go 重写换来一个二进制、一个容器就能跑完的部署体验。这对两类人最有价值已经在用 RabbitMQ 的团队想换一个更轻的运行时但不愿意改动业务代码和客户端配置。新项目选型需要 AMQP 0-9-1 生态的成熟客户端库但不想要 RabbitMQ 的运维复杂度。协议兼容到什么程度SwiftMQ 同时支持AMQP 0-9-1含 RabbitMQ 扩展和MQTT 3.1.1兼容基线对齐RabbitMQ 4.3 语义。这意味着 RabbitMQ 生态里那些“扩展行为”——比如x-dead-letter-exchange、x-message-ttl、消费者优先级、Direct Reply-To——SwiftMQ 都按 RabbitMQ 的语义实现了。你原来在 RabbitMQ 上配的队列参数、交换机类型、绑定关系在 SwiftMQ 上理论上可以原样搬过来。MQTT 3.1.1 的加入则让 SwiftMQ 同时覆盖了 IoT 场景。同一个 broker 既能接 RabbitMQ 客户端也能接 MQTT 设备省掉了一套独立的消息基础设施。部署真的只有一个二进制SwiftMQ 的部署方式只有两种而且都很“朴素”Docker 方式从 GitHub 克隆后直接docker compose up即可。二进制方式下载对应平台的 release 包直接运行./swiftmq。不需要 Nginx 做反向代理不需要额外的数据库存元数据不需要 Node 运行时来跑管理界面。管理 UI 已经内嵌在二进制里了。默认端口和 RabbitMQ 保持一致迁移时甚至不用改防火墙规则端口用途5672AMQP1883MQTT15672管理 UI / HTTP API / 指标运维能力该有的都有不多不少SwiftMQ 在运维层提供了一个“够用”的集合管理 UI覆盖了队列、交换机、连接、账号权限、虚拟主机、策略、限制、集群这些日常操作。Prometheus /metrics端点直接暴露标准格式的指标你现有的 Grafana 面板可以几乎不动地接过来。swiftmqctl命令行工具提供了脚本化的管理入口适合放进 CI/CD 或者运维自动化流程。这套组合的定位很清晰不做“大而全的运维平台”但保证一个团队在日常运维中不需要额外拼装工具。已经实现的关键能力SwiftMQ 不是玩具级实现。以下能力在 README 中明确列出并已可用持久化采用段日志segment log设计支持可配置的 fsync 档位并提供崩溃恢复。fsync 档位的存在意味着你可以在“性能优先”和“可靠性优先”之间做显式选择而不是被一个固定策略绑死。发布确认Publisher Confirms和TTL / 死信 / 长度限制都已实现队列级别的这些行为对齐 RabbitMQ 语义。消费者优先级和Direct Reply-To也支持。前者在 RabbitMQ 的延迟队列和优先级消费模式中很常用后者的实现意味着你可以在不创建临时队列的情况下完成 RPC 风格的请求-响应。集群采用 Raft 做元数据一致性队列层面提供仲裁队列quorum queues跨节点消息转发已经打通。插件支持热启停不需要重启 broker 即可加载或卸载。适合谁不适合谁SwiftMQ 的定位不是“取代 RabbitMQ 的全部场景”。它更适合中小规模的消息场景需要 AMQP 生态的客户端库但流量远未达到需要 RabbitMQ 集群的程度。边缘和嵌入式场景一个二进制、低资源占用Go 编译后的静态二进制在 ARM 设备上跑起来没有额外依赖。开发和测试环境Docker 一行命令起 broker比在本地装 Erlang 和 RabbitMQ 快得多。如果你的场景需要极高的连接数数十万级长连接、需要 Federation/Shovel 做跨数据中心复制或者依赖 RabbitMQ 生态中某些 SwiftMQ 尚未覆盖的插件行为那还是应该留在 RabbitMQ。快速体验gitclone https://github.com/houzch/swiftmq.gitcdswiftmqdockercompose up然后打开http://localhost:15672管理 UI 应该已经在了。项目地址GitHubhttps://github.com/houzch/swiftmqGiteehttps://gitee.com/xhou/swiftmq一句话总结如果你的 RabbitMQ 客户端已经跑起来了想换个更轻的 brokerSwiftMQ 值得你花 10 分钟改一下连接地址试试。