一,安裝
ulimit -SHn 65535
wget http://httpsqs.googlecode.com/files/libevent-2.0.12-stable.tar.gz
tar zxvf libevent-2.0.12-stable.tar.gz
cd libevent-2.0.12-stable/
./configure --prefix=/usr/local/libevent-2.0.12-stable/
make
make install
cd ../
wget http://httpsqs.googlecode.com/files/tokyocabinet-1.4.47.tar.gz
tar zxvf tokyocabinet-1.4.47.tar.gz
cd tokyocabinet-1.4.47/
./configure --prefix=/usr/local/tokyocabinet-1.4.47/
#注:在32位Linux操作系統上編譯Tokyo cabinet,請使用./configure --enable-off64代替./configure,可以使數據庫文件突破2GB的限制。
#./configure --enable-off64 --prefix=/usr/local/tokyocabinet-1.4.47/
#在編譯 tokyocabinet 時會報 configure: error: bzlib.h is required 的錯誤。
#解決方法是: yum install bzip2-devel
make
make install
cd ../
wget http://httpsqs.googlecode.com/files/httpsqs-1.7.tar.gz
tar zxvf httpsqs-1.7.tar.gz
cd httpsqs-1.7/
make
make install
cd ../
二、常用命令
httpsqs -h
-l <ip_addr> 監聽的IP地址,默認值為 0.0.0.0
-p <num> 監聽的TCP端口(默認值:1218)
-x <path> 數據庫目錄,目錄不存在會自動創建(例如:/opt/httpsqs/data)
-t <second> HTTP請求的超時時間(默認值:3)
-s <second> 同步內存緩沖區內容到磁盤的間隔秒數(默認值:5)
-c <num> 內存中緩存的最大非葉子節點數(默認值:1024)
-m <size> 數據庫內存緩存大小,單位:MB(默認值:100)
-i <file> 保存進程PID到文件中(默認值:/tmp/httpsqs.pid)
-a <auth> 訪問HTTPSQS的驗證密碼(例如:mypass123)
-d 以守護進程運行
-h 顯示這個幫助
三、創建隊列
為了訪問安全 所以使用密碼進行驗證
#mkdir /data
# httpsqs -d -p 1218 -x /data/zabbix -a zabbix
請使用命令“killall httpsqs”、“pkill httpsqs”和“kill `cat /tmp/httpsqs.pid`”來停止httpsqs。
注意:請不要使用命令“pkill -9 httpsqs”和“kill -9 httpsqs的進程ID”來結束httpsqs,否則,內存中尚未保存到磁盤的數據將會丟失。
[root@fms_server ~]# netstat -tnlp | grep 1218
tcp 0 0 0.0.0.0:1218 0.0.0.0:* LISTEN 11423/zabbix -a zab
四、入隊列
GET協議
#curl "http://115.182.209.189:1218/?name=zabbix&opt=put&data=zabbix監控&auth=zabbix"
#返回結果,如果是ok 證明入隊列成功
HTTPSQS_PUT_OK
POST協議
# curl -d "zabbix監控" "http://115.182.209.189:1218/?name=zabbix&opt=put&auth=zabbix"
#返回結果,如果是ok 證明入隊列成功
HTTPSQS_PUT_OK
如果入隊列失敗,返回:
HTTPSQS_PUT_ERROR
如果隊列已滿,返回:
HTTPSQS_PUT_END
五、出隊列(從隊列中取出)
GET方式取出UTF-8格式
# curl "http://115.182.209.189:1218/?charset=utf-8&name=zabbix&opt=get&auth=zabbix"
#取出內容如下
zabbix監控
GET方式取出GB2312格式
curl "http://115.182.209.189:1218/?charset=gb2312&name=zabbix&opt=get&auth=zabbix"
#取出內容如下
zabbix監控
如果隊列里沒有內容 則返回
# curl "http://115.182.209.189:1218/?charset=utf-8&name=zabbix&opt=get&auth=zabbix"
#返回如下
HTTPSQS_GET_END
六、查看隊列狀態
# curl "http://115.182.209.189:1218/?name=zabbix&opt=status&auth=zabbix"
HTTP Simple Queue Service v1.7
------------------------------
Queue Name: zabbix
Maximum number of queues: 1000000
Put position of queue (1st lap): 2
Get position of queue (1st lap): 2
Number of unread queue:
json格式
# curl "http://115.182.209.189:1218/?name=zabbix&opt=status_json&auth=zabbix"
{"name":"zabbix","maxqueue":1000000,"putpos":2,"putlap":1,"getpos":2,"getlap":1,"unread":0}