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

Queueman 是一个用 Go 语言编写,适用于 RabbitMQ、Redis 队列的高性能分发中间件。支持延时队列、并发控制、失败自动重试。

  •  
  •   marknown · 2020-05-29 10:29:59 +08:00 · 2699 次点击
    这是一个创建于 1668 天前的主题,其中的信息可能已经有所发展或是发生改变。

    背景

    1. 队列越来越多,消费脚本也越来越多,通过多进程来消费队列,开销也比较大。
    2. 程序员既要写服务端代码,也要写命令行代码,还要对命令行代码进行部署,容易出错。
    3. 正常业务要延时处理,有没有比较简单的方式来实现自动延时,不用写正常业务代码,还要写延时业务代码。

    于是,是否可以有一种有新的轻量模式来取代这种传统模式,让开发人员更关注实现业务本身?让开发人员方便快捷的完成如下流程:

    1. 开发人员写 web 代码 push 数据到队列
    2. 队列中间件取出数据,转发到指定 URL 地址
    3. 开发人员写 web 代码接收并处理

    Queueman 介绍

    Queueman 是一个适用于 RabbitMQ 、Redis 队列的高性能分发中间件。支持延时队列、并发控制、失败自动重试。

    1. 简单的并发控制
    2. 简单配置就可以自动失败后重试
    3. 不用再写命令行代码就可以消费队列了

    测试理论速度:单机 1-3 万条 /秒

    详情请移步: https://github.com/marknown/queueman 欢迎大家拍砖头,一起改进。

    6 条回复    2020-06-17 12:14:05 +08:00
    wysnylc
        1
    wysnylc  
       2020-05-29 11:09:38 +08:00
    三年后如果你还在维护,这个还是有希望占领一部分市场的
    coosir
        2
    coosir  
       2020-05-29 11:40:06 +08:00
    严重支持!对于中小型项目,这种模式非常合适
    marknown
        3
    marknown  
    OP
       2020-05-29 13:39:13 +08:00
    可以先在小项目上用吧。比较方便。目前这个软件在我们公司生产环境跑了一个月,处理了 5000W 条的数据,很稳定。
    OakScript
        4
    OakScript  
       2020-05-29 16:40:12 +08:00
    配置文件用 yaml 更主流一点?
    marknown
        5
    marknown  
    OP
       2020-05-31 17:57:35 +08:00
    @OakScript 之前选过型,json 我更了解一些。后面看看 yaml,感谢。
    vus520
        6
    vus520  
       2020-06-17 12:14:05 +08:00
    如果是 Redis,怎么实现延迟队列的效果?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1076 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:05 · PVG 02:05 · LAX 10:05 · JFK 13:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.