摘要:基于的延遲消息隊列中間件,采用開發,支持等多種語言客戶端。參考有贊延遲隊列設計中的部分設計,優化后實現。會員到期前天,短信通知續費。其他針對某個任務,延遲執行功能的需求。服務器端定時使用連接池并行將中到期的放入對應的中,供客戶端取出。
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/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/29574.html
摘要:它是阿里巴巴于年開源的第三代分布式消息中間件。是一個分布式消息中間件,具有低延遲高性能和可靠性萬億級別的容量和靈活的可擴展性,它是阿里巴巴于年開源的第三代分布式消息中間件。上篇文章消息隊列那么多,為什么建議深入了解下RabbitMQ?我們講到了消息隊列的發展史:并且詳細介紹了RabbitMQ,其功能也是挺強大的,那么,為啥又要搞一個RocketMQ出來呢?是重復造輪子嗎?本文我們就帶大家來詳...
閱讀 1294·2021-10-08 10:05
閱讀 4105·2021-09-22 15:54
閱讀 3105·2021-08-27 16:18
閱讀 3106·2019-08-30 15:55
閱讀 1435·2019-08-29 12:54
閱讀 2747·2019-08-26 11:42
閱讀 542·2019-08-26 11:39
閱讀 2128·2019-08-26 10:11