摘要:基于的延迟消息队列中间件,采用开发,支持等多种语言客户端。参考有赞延迟队列设计中的部分设计,优化后实现。会员到期前天,短信通知续费。其他针对某个任务,延迟执行功能的需求。服务器端定时使用连接池并行将中到期的放入对应的中,供客户端取出。
Delayer
基于 Redis 的延迟消息队列中间件,采用 Golang 开发,支持 PHP、Golang 等多种语言客户端。
参考 有赞延迟队列设计 中的部分设计,优化后实现。
项目链接:https://github.com/mixstart/d... ,有需要的朋友加 Star 哦。
应用场景订单超过30分钟未支付,自动关闭订单。
订单完成后, 如果用户一直未评价, 5天后自动好评。
会员到期前3天,短信通知续费。
其他针对某个任务,延迟执行功能的需求。
实现原理客户端:push 任务时,任务数据存入 hash 中,jobID 存入 zset 中,pop 时从指定的 list 中取准备好的数据。
服务器端:定时使用连接池并行将 zset 中到期的 jobID 放入对应的 list 中,供客户端 pop 取出。
核心特征使用 Golang 开发,高性能。
高可用,服务器端操作是原子的,且做了优雅停止,不会丢失数据。
可通过配置文件控制执行性能参数。
提供具体言语的 SDK,使用简单快捷。
如何使用delayer 分为:
服务器端:负责定时扫描到期的任务,并放入队列,需在服务器上常驻执行。
客户端:在代码中使用,以类库的形式,提供 push、pop、bPop、remove 方法操作任务。
服务器端在 https://github.com/mixstart/d... 中下载对应平台的程序。
支持 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客户端
我们提供了以下几种语言:
根据对应项目的说明使用
PHP:https://github.com/mixstart/d...
Golang:https://github.com/mixstart/d...
Java:待定
Python:待定
LicenseApache License Version 2.0, http://www.apache.org/licenses/
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/29574.html
摘要:它是阿里巴巴于年开源的第三代分布式消息中间件。是一个分布式消息中间件,具有低延迟高性能和可靠性万亿级别的容量和灵活的可扩展性,它是阿里巴巴于年开源的第三代分布式消息中间件。上篇文章消息队列那么多,为什么建议深入了解下RabbitMQ?我们讲到了消息队列的发展史:并且详细介绍了RabbitMQ,其功能也是挺强大的,那么,为啥又要搞一个RocketMQ出来呢?是重复造轮子吗?本文我们就带大家来详...
阅读 1255·2021-10-08 10:05
阅读 4066·2021-09-22 15:54
阅读 3084·2021-08-27 16:18
阅读 3082·2019-08-30 15:55
阅读 1404·2019-08-29 12:54
阅读 2726·2019-08-26 11:42
阅读 525·2019-08-26 11:39
阅读 2080·2019-08-26 10:11