当前位置: 首页 > 后端技术 > PHP

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

时间:2023-03-29 20:17:24 PHP

Delayer是一个基于Redis的延迟消息队列中间件,使用Golang开发,支持PHP、Golang等多语言客户端。参考有赞延迟队列设计中的部分设计,优化后实现。项目链接:https://github.com/mixstart/d...,有需要的朋友加个Star。应用场景订单超过30分钟未付款,订单将自动关闭。下单完成后,如果用户没有评论,5天后会自动点赞。会员到期前3天,续会短信通知。延迟执行某个任务的功能的其他要求。实现原理Client:推送任务时,任务数据存放在hash中,jobID存放在zset中,pop时从指定列表中取出准备好的数据。Server端:定时使用连接池将zset中过期的jobID放到对应的list中,供client弹出。核心功能使用Golang开发,性能高。高可用性,服务器端操作是原子的,并且优雅地停止而不会丢失数据。可以通过配置文件控制执行性能参数。提供特定语言的SDK,使用方便快捷。delayer的使用方法分为:服务器端:负责定时扫描过期的任务,放入队列中,需要在服务器端永久执行。Client:在代码中使用,以类库的形式提供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;连接端口数据库=0;数据库号password=;密码,无密码留空max_idle=2;最大空闲连接数max_active=20;最大活动连接数idle_timeout=3600;空闲连接超时,以秒为单位conn_max_lifetime=3600;connectionlifetime,inseconds查看帮助:[root@localhostbin]#./delayer-hUsage:delayer[options]Options:-d/--daemonruninthebackground-c/--configurationFILENAME--配置文件路径(如果未给出则搜索)-h/--help--打印此用法消息并退出-v/--version--打印版本号并退出Startup:[root@localhostbin]#./delayer______/__\___//________________////_\//__`////_\/___///_//__///_///_//__///____/\___/_/\__,_/\__,/\___/_//____/Service:delayerVersion:1.0.1[info]2018/10/1911:24:24服务启动成功,PID:31023Client我们提供以下语言:按照对应项目的说明使用PHP:https://github.com/mixstart/d...Golang:https://github.com/mixstart/d...Java:待定Python:待定许可证Apache许可证版本2.0,http://www.apache.org/licenses/