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

[[email protected] libevent-2.0.12-stable]# make install

[[email protected] libevent-2.0.12-stable]# cd ..

安装 tokyocabinet

[[email protected] httpsqs]# wget http://httpsqs.googlecode.com/files/tokyocabinet-1.4.47.tar.gz

[[email protected] httpsqs]# tar -zxf tokyocabinet-1.4.47.tar.gz

[[email protected] 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/

[[email protected] tokyocabinet-1.4.47]# ./configure --prefix=/usr/local/tokyocabinet-1.4.47/

[[email protected] tokyocabinet-1.4.47]# make

[[email protected] tokyocabinet-1.4.47]# make install

[[email protected] libevent-2.0.12-stable]# cd ..

安装 httpsqs

[[email protected] httpsqs]# wget http://httpsqs.googlecode.com/files/httpsqs-1.7.tar.gz

[[email protected] httpsqs]# tar -zxf httpsqs-1.7.tar.gz

[[email protected] httpsqs]# cd httpsqs-1.7

[[email protected] httpsqs-1.7]# make

[[email protected] httpsqs-1.7]# make install

[[email protected] 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

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

启动:

[[email protected] httpsqs-1.7]# ulimit -SHn 65535

[[email protected] httpsqs-1.7]# httpsqs -d -p 1218 -x /usr/local/httpsqs/

[[email protected] 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

时间: 2024-10-05 09:09:02

Linux -- 消息队列 httpsqs 安装的相关文章

PHP消息队列httpsqs安装与使用

项目网址:http://code.google.com/p/httpsqs/ 使用文档:http://blog.s135.com/httpsqs/ 说明:由于需要安装的东西有些多,原文可能写的有些简略,所以适当补充了 1.安装libevent-2.0.12-stable.tar.gz wget http://httpsqs.googlecode.com/files/libevent-2.0.12-stable.tar.gz tar zxvf libevent-2.0.12-stable.tar.

LINUX消息队列实战之一

前言 能说能抄能论皆不算,能写能打才是真功夫. 唠叨 反正我也是一个孤独的程序猿,多说一些奇奇怪怪的唠叨也无妨,第一次写消息队列,书本的东西和实战很不同,根据实战总结的一些注意事项会和大家分享,也敲打敲打自己,以后别总是想当然,要头顶蓝天,脚踩大地,做一个能文亦能武的敦厚男人. 简介 消息队列是linux提供的一种便利的IPC机制,不具有任何血缘关系的程序可以通过消息队列进行便利的通信:不同的程序通过同样的key访问同一个消息队列,支持不同优先级的消息队列,效率较高且使用便利. 消息队列常用的几

千万PV网站架构之RabbitMQ(消息队列)安装、集群

RabbitMQ介绍: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术.排队指的是应用程序通过 队列来通信.队列的使用除去了接收和发送应用程序同时执行的要求. RabbitMQ是一个在AMQP基础上完成的,可复用的企业消息系统.他遵循Mozill

linux 消息队列 参数

消息队列 一.函数 mq_open 头文件 mqueue.h: 原型 mqd_t mq_open(const char *name, int oflag, .../*mode_t mode,struct mq_attr* attr*/); 函数功能 创建消息队列: 参数 name :消息队列的名字,根据消息队列的规则,为了更好的可移植性,该名字必须以‘/’开头,创建一个消息队列的时候无须路径,给出名字就好,其存放位置可有自己指定(创建前后都可以). oflag:O_RDONLY(只读) O_WR

Linux 消息队列编程

消息队列.信号量以及共享内存被称作 XSI IPC,它们均来自system V的IPC功能,因此具有许多共性. 键和标识符: 内核中的每一种IPC结构(比如信号量.消息队列.共享内存)都用一个非负整数的标识符加以标示(如共享内存的shmid.信号量的semid.以及消息队列的msgid).不同于文件描述符,IPC标识符不是一个小的非负整数,它是一个int型的整数,当一个标识符被创建,以后又被删除时,这个整数持续加1,达到整型的最大值后,重新回到0. 但是每一个IPC对象在内核中的标识符只能在内部

linux消息队列操作

对消息队列的操作无非有以下三种类型: 1. 打开或创建消息队列消息队列的内核持续性要求每一个消息队列都在系统范围内相应唯一的键值,所以,要获得一个消息队列的描写叙述字,仅仅需提供该消息队列的键值就可以: 注:消息队列描写叙述字是由在系统范围内唯一的键值生成的,而键值能够看作相应系统内的一条路经. 2. 读写操作 消息读写操作很easy,对开发者来说,每一个消息都相似例如以下的数据结构: struct msgbuf{ long mtype; char mtext[1]; }; mtype成员代表消

linux消息队列应用编程

消息队列:  消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法   每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值   消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有一个上限(MSGMNI) 对比管道和消息: 管道:流管道        消息:有边界 先进先出              可以后进入.先出来 消息大小三大限制 cat /proc/sys/

Linux消息队列基础

消息队列基本概念 消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法(仅局限与本机) 每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值 消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有一个上限(MSGMNI) 管道 vs. 消息队列: 管道: 流管道          消息: 有边界 先进先出            可以后进入.先出来 消息队列大小三大限制

linux消息队列相关操作

/* 发送消息队列 */ #include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <sys/ipc.h>#include <sys/msg.h> struct mymsg { long mtype; /* messag