V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
1800x
V2EX  ›  Go 编程语言

有没有轻量级分布式消息队列

  •  
  •   1800x · 216 天前 via Android · 4290 次点击
    这是一个创建于 216 天前的主题,其中的信息可能已经有所发展或是发生改变。
    用于小型分布式微服务系统
    要求:
    1 几乎没有资源消耗
    2 上手、维护简单
    3 没有单点故障
    4 支持发布/订阅
    5 支持失败重试
    6 支持定时/延时消息
    7 支持 go python

    目前主流消息队列,资源消耗大、维护困难。
    数据储存可以用 mysql redis 。这两样一般的系统都有。
    当然,这个消息队列上传输的数据量不大。
    33 条回复    2024-06-05 10:33:27 +08:00
    ipwx
        1
    ipwx  
       216 天前
    redis 都支持。。。
    iqingqian
        3
    iqingqian  
       216 天前
    1800x
        4
    1800x  
    OP
       216 天前 via Android
    @iqingqian 这货不支持“订阅”。客户端会收到全部任务,没得选
    qingshanyuluo
        5
    qingshanyuluo  
       216 天前
    那两个流行的消息队列本来也不重啊
    ChoateYao
        6
    ChoateYao  
       216 天前
    用 redis 自己搞一个
    就用 set 维持一个订阅列表,每个名称都是一个 redis 队列。
    hui314
        7
    hui314  
       216 天前
    beanstalkd
    gesse
        8
    gesse  
       216 天前
    mqtt ?
    mightybruce
        9
    mightybruce  
       216 天前
    1.云原生 nats.io
    2.redis stream
    3. 自己用消息中间件 zeromq 或 nanomsg 自己封装一下想有什么功能就有什么功能。
    zeromq 几乎有所有流行语言的库
    mightybruce
        10
    mightybruce  
       216 天前
    nanomsg 有好几种语言的实现,原来是为了进入 linux 内核,把 zeromq 用 C 改写了,现在也有纯 go 语言实现。
    https://github.com/nanomsg/mangos
    yjhatfdu2
        11
    yjhatfdu2  
       216 天前
    nats jetstream 只有 6 大概没有其他全符合
    dododada
        12
    dododada  
       216 天前
    nsq , 但是 5 不确定是否支持,可能要自己写
    rekulas
        13
    rekulas  
       216 天前
    rabbitmq docker 一键运行内存占用几十 用了很多年了
    8355
        14
    8355  
       216 天前
    推荐 redis stream
    有消费者组 目前我们深度应用,阿里云 2g 的 redis 跑的飞起
    有消费和重试机制
    evam
        15
    evam  
       216 天前
    总感觉你在说 redis 啊
    LieEar
        16
    LieEar  
       216 天前
    我推荐一个,celery
    https://github.com/celery/celery
    xubeiyou
        17
    xubeiyou  
       216 天前
    Redis 或者是 mqtt
    dwu8555
        18
    dwu8555  
       216 天前 via iPhone
    @1800x 支持订阅啊,你设置需要处理的 queue 就行了
    allenby
        19
    allenby  
       216 天前 via Android
    codersdp1
        20
    codersdp1  
       216 天前
    @iqingqian 这个还可以
    BeijingBaby
        21
    BeijingBaby  
       216 天前
    既然分布式了,不太可能还很轻量吧。毕竟各种情况都要考虑到。
    904653238
        22
    904653238  
       216 天前
    @8355 用 redis stream, 你们的流重分配是自己做的吗?
    8355
        23
    8355  
       216 天前
    @904653238 这个没啥难度是自己做的,重新投递即可,stream 内部机制可以记录重试次数和超时时间。
    904653238
        24
    904653238  
       216 天前
    @8355 能交流下吗? OTA0NjUzMjM4
    Scarb
        25
    Scarb  
       216 天前
    rabbitmq
    xsen
        26
    xsen  
       216 天前
    nsq
    nats
    su14772
        27
    su14772  
       215 天前
    redis stream 不就可以么
    update
        28
    update  
       215 天前
    redis stream
    yougg
        29
    yougg  
       215 天前 via Android
    zzhaolei
        30
    zzhaolei  
       215 天前
    IDAEngine
        31
    IDAEngine  
       214 天前
    rabbitmq
    xierqii
        32
    xierqii  
       204 天前
    pulsar https://pulsar.apache.org/

    要是测试用,用镜像一键拉起服务,方便快捷。
    dyllen
        33
    dyllen  
       196 天前
    redis 吧,不用额外引入外部组件,引入一个 redis 队列的库就能用了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3203 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:14 · PVG 20:14 · LAX 04:14 · JFK 07:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.