Golang Go语言中有没有轻量级分布式消息队列

发布于 1周前 作者 phonegap100 来自 Go语言

用于小型分布式微服务系统
要求:
1 几乎没有资源消耗
2 上手、维护简单
3 没有单点故障
4 支持发布/订阅
5 支持失败重试
6 支持定时/延时消息
7 支持 go python

目前主流消息队列,资源消耗大、维护困难。
数据储存可以用 mysql redis 。这两样一般的系统都有。
当然,这个消息队列上传输的数据量不大。
Golang Go语言中有没有轻量级分布式消息队列

34 回复

redis 都支持。。。

更多关于Golang Go语言中有没有轻量级分布式消息队列的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这货不支持“订阅”。客户端会收到全部任务,没得选

那两个流行的消息队列本来也不重啊

用 redis 自己搞一个
就用 set 维持一个订阅列表,每个名称都是一个 redis 队列。

1.云原生 nats.io
2.redis stream
3. 自己用消息中间件 zeromq 或 nanomsg 自己封装一下想有什么功能就有什么功能。
zeromq 几乎有所有流行语言的库

nanomsg 有好几种语言的实现,原来是为了进入 linux 内核,把 zeromq 用 C 改写了,现在也有纯 go 语言实现。
https://github.com/nanomsg/mangos

nats jetstream 只有 6 大概没有其他全符合

nsq , 但是 5 不确定是否支持,可能要自己写

rabbitmq docker 一键运行内存占用几十 用了很多年了

推荐 redis stream
有消费者组 目前我们深度应用,阿里云 2g 的 redis 跑的飞起
有消费和重试机制

总感觉你在说 redis 啊

Redis 或者是 mqtt

支持订阅啊,你设置需要处理的 queue 就行了

这个还可以

既然分布式了,不太可能还很轻量吧。毕竟各种情况都要考虑到。

用 redis stream, 你们的流重分配是自己做的吗?

这个没啥难度是自己做的,重新投递即可,stream 内部机制可以记录重试次数和超时时间。

能交流下吗? OTA0NjUzMjM4

redis stream 不就可以么

pulsar https://pulsar.apache.org/

要是测试用,用镜像一键拉起服务,方便快捷。

redis 吧,不用额外引入外部组件,引入一个 redis 队列的库就能用了。

在Golang(Go语言)中,确实存在轻量级的分布式消息队列解决方案。Go语言以其高效的并发处理能力和简洁的语法,非常适合开发分布式系统,包括消息队列。

首先,Go语言原生支持并发编程,通过goroutine和channel可以方便地实现消息的并发读写操作,这为开发分布式消息队列提供了坚实的基础。

其次,Go语言有丰富的第三方库支持,比如可以使用官方的go-nsq库与NSQ进行交互。NSQ是一个由Bitly开源的实时分布式消息平台,设计简单,易于部署和使用,并具有高可用性和高可靠性,非常适合作为轻量级的分布式消息队列。

此外,还有其他一些轻量级的分布式消息队列解决方案也可以在Go语言中使用,如NATS等。这些消息队列系统通常具有高性能、低时延的特点,并且易于集成到Go语言的应用程序中。

综上所述,Go语言中确实存在轻量级的分布式消息队列解决方案,开发者可以根据自己的需求选择合适的消息队列系统,并利用Go语言的并发特性和丰富的库支持来构建高效、可靠的分布式系统。

回到顶部