V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
onanying
V2EX  ›  开源软件

Delayer 基于 Redis 的延迟消息队列中间件

  •  
  •   onanying · 2018-10-26 16:17:40 +08:00 · 3080 次点击
    这是一个创建于 2251 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Delayer

    基于 Redis 的延迟消息队列中间件,采用 Golang 开发。

    参考 有赞延迟队列设计 中的部分设计,优化后实现。

    项目链接: https://github.com/mixstart/delayer,有需要的朋友加 Star 哦。

    应用场景

    • 订单超过 30 分钟未支付,自动关闭订单。
    • 订单完成后, 如果用户一直未评价, 5 天后自动好评。
    • 会员到期前 3 天,短信通知续费。
    • 其他针对某个任务,延迟执行功能的需求。

    实现原理

    • 客户端:push 任务时,任务数据存入 hash 中,jobID 存入 zset 中,pop 时从指定的 list 中取准备好的数据。
    • 服务器端:定时使用连接池并行将 zset 中到期的 jobID 放入对应的 list 中,供客户端 pop 取出。

    核心特征

    • 使用 Golang 开发,高性能。
    • 高可用,服务器端操作是原子的,且做了优雅停止,不会丢失数据。
    • 可通过配置文件控制执行性能参数。
    • 提供具体言语的 SDK,使用简单快捷。

    如何使用

    delayer 分为:

    • 服务器端:负责定时扫描到期的任务,并放入队列,需在服务器上常驻执行。
    • 客户端:在代码中使用,以类库的形式,提供 pushpopbPopremove 方法操作任务。

    服务器端

    https://github.com/mixstart/delayer/releases 中下载对应平台的程序。

    支持 windows、linux、mac 三种平台

    然后修改配置文件 delayer.conf

    [delayer]
    pid = /var/run/delayer.pid      ; 单例执行, 多实例执行留空, Win 不支持
    timer_interval = 1000           ; 计算间隔时间, 单位毫秒
    access_log = logs/access.log    ; 存取日志
    error_log = logs/error.log      ; 错误日志
    
    [redis]
    host = 127.0.0.1                ; 连接地址
    port = 6379                     ; 连接端口
    database = 0                    ; 数据库编号
    password =                      ; 密码, 无需密码留空
    max_idle = 2                    ; 最大空闲连接数
    max_active = 20                 ; 最大激活连接数
    idle_timeout = 3600             ; 空闲连接超时时间, 单位秒
    conn_max_lifetime = 3600        ; 连接生存时间, 单位秒
    

    查看帮助:

    [root@localhost bin]# ./delayer -h
    Usage: delayer [options]
    
    Options:
    -d/--daemon run in the background
    -c/--configuration FILENAME -- configuration file path (searches if not given)
    -h/--help -- print this usage message and exit
    -v/--version -- print version number and exit
    

    启动:

    [root@localhost bin]# ./delayer
        ____       __
       / __ \___  / /___ ___  _____  _____
      / / / / _ \/ / __ `/ / / / _ \/ ___/
     / /_/ /  __/ / /_/ / /_/ /  __/ /
    /_____/\___/_/\__,_/\__, /\___/_/
                       /____/
    Service:		delayer
    Version:		1.0.1
    [info] 2018/10/19 11:24:24 Service started successfully, PID: 31023
    

    客户端

    我们提供了以下几种语言:

    根据对应项目的说明使用

    License

    Apache License Version 2.0, http://www.apache.org/licenses/

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1385 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 17:18 · PVG 01:18 · LAX 09:18 · JFK 12:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.