Golang Go语言中有没有轻量级分布式消息队列
用于小型分布式微服务系统
要求:
1 几乎没有资源消耗
2 上手、维护简单
3 没有单点故障
4 支持发布/订阅
5 支持失败重试
6 支持定时/延时消息
7 支持 go python
目前主流消息队列,资源消耗大、维护困难。
数据储存可以用 mysql redis 。这两样一般的系统都有。
当然,这个消息队列上传输的数据量不大。
Golang Go语言中有没有轻量级分布式消息队列
这货不支持“订阅”。客户端会收到全部任务,没得选
那两个流行的消息队列本来也不重啊
用 redis 自己搞一个
就用 set 维持一个订阅列表,每个名称都是一个 redis 队列。
beanstalkd
mqtt ?
nanomsg 有好几种语言的实现,原来是为了进入 linux 内核,把 zeromq 用 C 改写了,现在也有纯 go 语言实现。
https://github.com/nanomsg/mangos
nats jetstream 只有 6 大概没有其他全符合
nsq , 但是 5 不确定是否支持,可能要自己写
rabbitmq docker 一键运行内存占用几十 用了很多年了
推荐 redis stream
有消费者组 目前我们深度应用,阿里云 2g 的 redis 跑的飞起
有消费和重试机制
总感觉你在说 redis 啊
我推荐一个,celery
https://github.com/celery/celery
Redis 或者是 mqtt
支持订阅啊,你设置需要处理的 queue 就行了
这个还可以
既然分布式了,不太可能还很轻量吧。毕竟各种情况都要考虑到。
用 redis stream, 你们的流重分配是自己做的吗?
这个没啥难度是自己做的,重新投递即可,stream 内部机制可以记录重试次数和超时时间。
能交流下吗? OTA0NjUzMjM4
rabbitmq
nsq
nats
redis stream 不就可以么
redis stream
rabbitmq
pulsar https://pulsar.apache.org/
要是测试用,用镜像一键拉起服务,方便快捷。
redis 吧,不用额外引入外部组件,引入一个 redis 队列的库就能用了。
在Golang(Go语言)中,确实存在轻量级的分布式消息队列解决方案。Go语言以其高效的并发处理能力和简洁的语法,非常适合开发分布式系统,包括消息队列。
首先,Go语言原生支持并发编程,通过goroutine和channel可以方便地实现消息的并发读写操作,这为开发分布式消息队列提供了坚实的基础。
其次,Go语言有丰富的第三方库支持,比如可以使用官方的go-nsq库与NSQ进行交互。NSQ是一个由Bitly开源的实时分布式消息平台,设计简单,易于部署和使用,并具有高可用性和高可靠性,非常适合作为轻量级的分布式消息队列。
此外,还有其他一些轻量级的分布式消息队列解决方案也可以在Go语言中使用,如NATS等。这些消息队列系统通常具有高性能、低时延的特点,并且易于集成到Go语言的应用程序中。
综上所述,Go语言中确实存在轻量级的分布式消息队列解决方案,开发者可以根据自己的需求选择合适的消息队列系统,并利用Go语言的并发特性和丰富的库支持来构建高效、可靠的分布式系统。