摘要:基于的延遲消息隊(duì)列中間件,采用開發(fā),支持等多種語言客戶端。參考有贊延遲隊(duì)列設(shè)計(jì)中的部分設(shè)計(jì),優(yōu)化后實(shí)現(xiàn)。會(huì)員到期前天,短信通知續(xù)費(fèi)。其他針對(duì)某個(gè)任務(wù),延遲執(zhí)行功能的需求。服務(wù)器端定時(shí)使用連接池并行將中到期的放入對(duì)應(yīng)的中,供客戶端取出。
Delayer
基于 Redis 的延遲消息隊(duì)列中間件,采用 Golang 開發(fā),支持 PHP、Golang 等多種語言客戶端。
參考 有贊延遲隊(duì)列設(shè)計(jì) 中的部分設(shè)計(jì),優(yōu)化后實(shí)現(xiàn)。
項(xiàng)目鏈接:https://github.com/mixstart/d... ,有需要的朋友加 Star 哦。
應(yīng)用場景訂單超過30分鐘未支付,自動(dòng)關(guān)閉訂單。
訂單完成后, 如果用戶一直未評(píng)價(jià), 5天后自動(dòng)好評(píng)。
會(huì)員到期前3天,短信通知續(xù)費(fèi)。
其他針對(duì)某個(gè)任務(wù),延遲執(zhí)行功能的需求。
實(shí)現(xiàn)原理客戶端:push 任務(wù)時(shí),任務(wù)數(shù)據(jù)存入 hash 中,jobID 存入 zset 中,pop 時(shí)從指定的 list 中取準(zhǔn)備好的數(shù)據(jù)。
服務(wù)器端:定時(shí)使用連接池并行將 zset 中到期的 jobID 放入對(duì)應(yīng)的 list 中,供客戶端 pop 取出。
核心特征使用 Golang 開發(fā),高性能。
高可用,服務(wù)器端操作是原子的,且做了優(yōu)雅停止,不會(huì)丟失數(shù)據(jù)。
可通過配置文件控制執(zhí)行性能參數(shù)。
提供具體言語的 SDK,使用簡單快捷。
如何使用delayer 分為:
服務(wù)器端:負(fù)責(zé)定時(shí)掃描到期的任務(wù),并放入隊(duì)列,需在服務(wù)器上常駐執(zhí)行。
客戶端:在代碼中使用,以類庫的形式,提供 push、pop、bPop、remove 方法操作任務(wù)。
服務(wù)器端在 https://github.com/mixstart/d... 中下載對(duì)應(yīng)平臺(tái)的程序。
支持 windows、linux、mac 三種平臺(tái)
然后修改配置文件 delayer.conf:
[delayer] pid = /var/run/delayer.pid ; 單例執(zhí)行, 多實(shí)例執(zhí)行留空, Win不支持 timer_interval = 1000 ; 計(jì)算間隔時(shí)間, 單位毫秒 access_log = logs/access.log ; 存取日志 error_log = logs/error.log ; 錯(cuò)誤日志 [redis] host = 127.0.0.1 ; 連接地址 port = 6379 ; 連接端口 database = 0 ; 數(shù)據(jù)庫編號(hào) password = ; 密碼, 無需密碼留空 max_idle = 2 ; 最大空閑連接數(shù) max_active = 20 ; 最大激活連接數(shù) idle_timeout = 3600 ; 空閑連接超時(shí)時(shí)間, 單位秒 conn_max_lifetime = 3600 ; 連接生存時(shí)間, 單位秒
查看幫助:
[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
啟動(dòng):
[root@localhost bin]# ./delayer ____ __ / __ \___ / /___ ___ _____ _____ / / / / _ / / __ `/ / / / _ / ___/ / /_/ / __/ / /_/ / /_/ / __/ / /_____/\___/_/\__,_/\__, /\___/_/ /____/ Service: delayer Version: 1.0.1 [info] 2018/10/19 11:24:24 Service started successfully, PID: 31023客戶端
我們提供了以下幾種語言:
根據(jù)對(duì)應(yīng)項(xiàng)目的說明使用
PHP:https://github.com/mixstart/d...
Golang:https://github.com/mixstart/d...
Java:待定
Python:待定
LicenseApache License Version 2.0, http://www.apache.org/licenses/
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/29574.html
摘要:它是阿里巴巴于年開源的第三代分布式消息中間件。是一個(gè)分布式消息中間件,具有低延遲高性能和可靠性萬億級(jí)別的容量和靈活的可擴(kuò)展性,它是阿里巴巴于年開源的第三代分布式消息中間件。上篇文章消息隊(duì)列那么多,為什么建議深入了解下RabbitMQ?我們講到了消息隊(duì)列的發(fā)展史:并且詳細(xì)介紹了RabbitMQ,其功能也是挺強(qiáng)大的,那么,為啥又要搞一個(gè)RocketMQ出來呢?是重復(fù)造輪子嗎?本文我們就帶大家來詳...
閱讀 1313·2021-10-08 10:05
閱讀 4137·2021-09-22 15:54
閱讀 3115·2021-08-27 16:18
閱讀 3118·2019-08-30 15:55
閱讀 1451·2019-08-29 12:54
閱讀 2758·2019-08-26 11:42
閱讀 558·2019-08-26 11:39
閱讀 2139·2019-08-26 10:11