Linux -- 消息隊列 httpsqs 安裝

安裝 libevent
[root @localhost httpsqs]# wget http://httpsqs.googlecode.com/files/libevent-2.0.12-stable.tar.gz
[root @localhost httpsqs]# tar -zxf libevent-2.0.12-stable.tar.gz
[root @localhost httpsqs]# cd libevent-2.0.12-stable
[root @localhost libevent-2.0.12-stable]# ./configure --prefix=/usr/local/libevent-2.0.12-stable/
[root @localhost libevent-2.0.12-stable]# make
[root@localhost libevent-2.0.12-stable]# make install
[root@localhost libevent-2.0.12-stable]# cd ..

安裝 tokyocabinet
[root@localhost httpsqs]# wget http://httpsqs.googlecode.com/files/tokyocabinet-1.4.47.tar.gz
[root@localhost httpsqs]# tar -zxf tokyocabinet-1.4.47.tar.gz 
[root@localhost httpsqs]# cd tokyocabinet-1.4.47
#注:在32位Linux操做系統上編譯Tokyo cabinet,請使用./configure --enable-off64代替./configure,能夠使數據庫文件突破2GB的限制。
#./configure --enable-off64 --prefix=/usr/local/tokyocabinet-1.4.47/
[root@localhost tokyocabinet-1.4.47]# ./configure --prefix=/usr/local/tokyocabinet-1.4.47/
[root@localhost tokyocabinet-1.4.47]# make
[root@localhost tokyocabinet-1.4.47]# make install
[root@localhost libevent-2.0.12-stable]# cd ..

安裝 httpsqs
[root@localhost httpsqs]# wget http://httpsqs.googlecode.com/files/httpsqs-1.7.tar.gz
[root@localhost httpsqs]# tar -zxf httpsqs-1.7.tar.gz 
[root@localhost httpsqs]# cd httpsqs-1.7
[root@localhost httpsqs-1.7]# make
[root@localhost httpsqs-1.7]# make install

[root@localhost httpsqs-1.7]# httpsqs -h
--------------------------------------------------------------------------------------------------
HTTP Simple Queue Service - httpsqs v1.7 (April 14, 2011)

-l  監聽的IP地址,默認值爲 0.0.0.0 
-p    監聽的TCP端口(默認值:1218)
-x   數據庫目錄,目錄不存在會自動建立(例如:/opt/httpsqs/data)
-t  HTTP請求的超時時間(默認值:3)
-s  同步內存緩衝區內容到磁盤的間隔秒數(默認值:5)
-c    內存中緩存的最大非葉子節點數(默認值:1024)
-m   數據庫內存緩存大小,單位:MB(默認值:100)
-i   保存進程PID到文件中(默認值:/tmp/httpsqs.pid)
-a    訪問HTTPSQS的驗證密碼(例如:mypass123)
-d       以守護進程運行
-h       顯示這個幫助

使用 killall httpsqs 批量殺掉 httpsqs 進程.關閉 httpsqs.
不要使用 pkill -9 httpsqs 或 kill -9 PID of httpsqs.不然,內存中還沒有保存到磁盤的數據將會丟失

更多介紹查看: http://code.google.com/p/httpsqs

--------------------------------------------------------------------------------------------------

啓動:
[root@localhost httpsqs-1.7]# ulimit -SHn 65535
[root@localhost httpsqs-1.7]# httpsqs -d -p 1218 -x /usr/local/httpsqs/

[root@localhost httpsqs-1.7]# netstat -atln | grep 1218
tcp     0    0 0.0.0.0:1218         0.0.0.0:*          LISTEN 

測試:

入隊測試
-----------------------------
在瀏覽器中訪問:
http://yourid:1218/?name=sunyu&opt=put&data=testcontent&auth=mypass123

若是入隊列成功,返回:
HTTPSQS_PUT_OK

若是入隊列失敗,返回:
HTTPSQS_PUT_ERROR

若是隊列已滿,返回:
HTTPSQS_PUT_END

從HTTPSQS 1.2版本開始,在返回給客戶端的HTTP Header頭中增長了一行「Pos: xxx」,輸出當前隊列的讀取位置點.
可在 firebug 或 chorm 返回的 response 中查看到:
Cache-Control:no-cache
Connection:keep-alive
Content-Length:14
Content-Type:text/plain
Date:Sat, 14 Dec 2013 14:00:27 GMT
Pos:5

出隊測試
-----------------------------
上面的實例是往隊列中 put 值.就是把消息傳入隊列.
下面是出隊的測試:
http://yourid:1218/?name=sunyu&opt=get&auth=mypass123
返回的結果就是以前 put 進去的.

隊列狀態
-----------------------------
http://yourid:1218/?name=sunyu&opt=status&auth=mypass123

HTTP Simple Queue Service v1.7
------------------------------
Queue Name: sunyu
Maximum number of queues: 1000000
Put position of queue (1st lap): 1
Get position of queue (1st lap): 1
Number of unread queue: 0

以 json 格式查看狀態:
http://yourid:1218/?name=sunyu&opt=status_json&auth=mypass123

查看指定隊列位置點的內容
-----------------------------
http://yourid:1218/?charset=utf-8&sunyu&opt=view&pos=1&auth=mypass123

pos >=1 而且 <= 1000000000

返回指定隊列位置點的內容。

重置指定隊列
-----------------------------
http://yourid:1218/?name=sunyu&opt=reset&auth=mypass123

若是重置成功,返回:

HTTPSQS_RESET_OK

若是重置失敗,返回:

HTTPSQS_RESET_ERROR

更改指定隊列的最大隊列數量
-----------------------------
默認的最大隊列長度(100萬條):1000000

http://yourid:1218/?name=sunyu&opt=maxqueue&num=1000000000&auth=mypass123"

num >=10 而且 <= 1000000000

若是更改最大隊列數量成功,則返回:
HTTPSQS_MAXQUEUE_OK

更改的最大隊列數量必須大於當前的「隊列寫入點」。另外,當「隊列寫入點」小於「隊列讀取點」時(即PUT位於圓環的第二圈,而GET位於圓環的第一圈時),本操做將被取消,而後返回給客戶端如下信息:
HTTPSQS_MAXQUEUE_CANCEL

不中止服務的狀況下,修改定時刷新內存緩衝區內容到磁盤的間隔時間
-----------------------------
從HTTPSQS 1.3版本開始支持此功能。

默認間隔時間:5秒 或 httpsqs -s 參數設置的值。

http://yourid:1218/?name=sunyu&opt=synctime&num=10&auth=mypass123"

num >=1 and <= 1000000000

若是修改間隔時間成功,則返回:
HTTPSQS_SYNCTIME_OK

若是 num 不在 1 ~ 1000000000 之間,本操做將被取消,而後返回給客戶端如下信息:
HTTPSQS_SYNCTIME_CANCEL

密碼校驗失敗
-----------------------------
從HTTPSQS 1.5版本開始支持此功能。

若是密碼校驗失敗(/?auth=xxx),將返回如下信息:
HTTPSQS_AUTH_FAILED

全局錯誤
-----------------------------
若是發生全局錯誤(即指令、參數錯誤等),將返回如下信息:
HTTPSQS_ERROR
相關文章
相關標籤/搜索