简介
- UCMQ是一款支持简单HTTP协议的轻量级消息队列服务,基本特性如下:
- 支持HTTP协议的GET/POST方法,支持长连接(keep-alive);
- 请求响应非常快速,入队列、出队列速度超过10000次/秒;
- 每个UCMQ实例支持多队列,队列通过操作接口自动创建;
- 单个队列支持的最大消息数量(未取出的)可以不限制,默认限制在1百万以内;
- 可以在不停止服务的情况下便捷地修改单个队列的属性;
- 可以实时查看队列属性(入队列数量、出队列数量、未读消息数量、消息积压数量)。
- 项目的最初原型来自于HTTPSQS,UCMQ的主要修改如下:
- 数据存储弃用TC,改用日志型文件方式存储。积压数据量不受限于内存,性能更高,大量的数据积压也不会导致性能波动,队列数据可以独立搬迁。
- 增加了多个运维接口和功能接口。
- 完全支持标准HTTP协议,同时兼容原有HTTPSQS协议。
安装部署
- 系统要求
- libevent版本2.0.10以上stable版本
- g++
- Libevent安装
tar zxf libevent-2.0.22-stable.tar.gz
./configure --prefix=/usr/local/libs
make && make install
ldconfig -v
- 获取安装包
git clone git://github.com/ucopensource/ucmq.git
- 编译安装
./configure --with-libevent=/usr/local/libs --prefix=/usr/local/ucmq
make clean && make && make install
- 配置说明
[server]
http_listen_addr=127.0.0.1 //监听地址
http_listen_port=1818 //监听端口
allow_exec_ip=0 //允许执行运维指令的ip,0为不限制
binlog_file_path=../binlog //binlog目录(暂未实现主从)
output_log_path=../log //日志目录
output_log_level=INFO //日志记录级别
keep_alive=300 //长连接有效时间(单位:秒)
conf_file=../conf/ucmq.ini //配置文件路径
pid_file=/tmp/ucmq_eth0_1818.pid //进程保护文件
res_store_space=4 //预留磁盘空间(单位:GB)
[rtag]
sync_interval=10 //数据文件内存映射持久化操作间隔(写操作次数)
sync_time_interval=100 //间隔n秒后持久化rtag和DB的信息,会调用fsync。
[queue]
def_max_queue=1000000 //队列允许积压消息量,设置为0则不限制
#延时只能设置更大
def_delay=0 //队列延时时间
#以下内容自从启动后不允许修改
[db]
data_file_path=../data //data文件存放路径
#文件大小不允许超过64,必须是系统页大小的倍数
db_file_max_size=64 //允许的data文件的最大限制(单位:MB)
启动服务
/usr/local/ucmq/bin/ucmq -c /usr/local/ucmq/conf/ucmq.ini -d
关闭服务(两种方式)
kill $(pgrep ucmq)
curl "http://<mq_ip>:<mq_port>/exec?cmd=kill