Skip to content

4Second2None/mx-queued

 
 

Repository files navigation

mx-queued

The fast message queue server


原理:

  • 使用跳跃表来存储队列, 所以队列支持优先值
  • 使用跳跃表保存延时队列
  • 使用HashTable保存所有的有名队列

使用协议:

  • 添加一个job到队列中:

  push <queue_name> <priority_value> <delay_time> <job_size>\r\n
  <job_body>\r\n

queue_name: 队列的名称
priority_value: job的优先值, 值越大越迟获取到
delay_time: job要延时的秒数
job_size: job的大小
job_body: job的数据体

  • 添加定时job到队列中:

  timer <queue_name> <priority_value> <date_timer> <job_size>\r\n
  <job_body>\r\n

queue_name: 队列的名称
priority_value: job的优先值, 值越大越迟获取到
date_timer: 指定时间把job放到准备队列中, 格式为:year-mon-day/hour:min:second, 如:2013-10-12/10:20:30
job_size: job的大小
job_body: job的数据体

  • 从队列中获取一个job

  pop <queue_name>\r\n

queue_name: 队列的名称

  • 获取队列的长度

  qsize <queue_name>\r\n

queue_name: 队列的名称

  • 监听一个队列

  watch <queue_name>\r\n

queue_name: 队列的名称

  • 获取一个job, 并且把这个job暂时放置到回收站

  fetch <queue_name>\r\n

queue_name: 队列的名称

  • 把回收站的指定ID的job放置到队列中

  recycle <recycle_id> <priority_value> <delay_time>\r\n

recycle_id: job在回收站的ID, 由fetch命令提供
priority_value: job的优先值, 值越大越迟获取到
delay_time: job要延时的秒数


安装:


$ cd mx-queue/
$ make

配置:


daemon = "no"                       #是否使用守护进程模式
port = "21021"                      #监听的端口
log_filepath = "./mx-queue.log"     #日志文件路径
bgsave_filepath = "./mx-queue.db"   #持久化文件路径
bgsave_rate = "60"                  #多久进行一次持久化
changes_todisk = "20"               #多少个藏数据进行一次持久化
recycle_expire = "60"               #回收站的生命周期

TODO List:

  • 持久化功能. (完成)
  • 定时队列功能. (完成)
  • 客户端可以监听队列. (完成)
  • 增加临时存放功能. (完成)
  • 多线程支持? (考虑中)

联系QQ: 280259971
新浪微博: @Lie_旭松

About

a fast message queue server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published