linux下安装zeromq消息队列软件

在上一节 消息中间件的技术选型心得-RabbitMQ、ActiveMQ和ZeroMQ 我们介绍了一些相关的消息队列软件.这里我们对安装zeromqq这款软件的安装及php使用方法介绍一下.

centos下安装zeromq消息队列软件.

一.安装服务端

cd ~
wget http://download.zeromq.org/zeromq-3.2.3.tar.gz
tar zxvf zeromq-3.2.3.tar.gz
cd zeromq-3.2.3
./configure # --prefix=/usr/local/zeromq
make && make install

二.安装php扩展 

git clone git://github.com/mkoppanen/php-zmq.git
cd php-zmq
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

执行完以后,会提示:

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/

表示生成了动态链接库文件zmq.so.这个时候可以查看一下目录里有没有zmq.so 这个文件. Continue reading

消息中间件的技术选型心得-RabbitMQ、ActiveMQ和ZeroMQ

RabbitMQ、ActiveMQ和ZeroMQ都是极好的消息中间件,但是我们在项目中该选择哪个更适合呢?很多开发者面临这个烦恼。下面我会对这三个消息中间件做一个比较,看了后你们就心中有数了。

RabbitMQ是AMQP协议领先的一个实现,它实现了代理(Broker)架构,意味着消息在发送到客户端之前可以在中央节点上排队。此特性使得RabbitMQ易于使用和部署,适宜于很多场景如路由、负载均衡或消息持久化等,用消息队列只需几行代码即可搞定。 Continue reading

centos下安装RabbitMQ消息队列

这里环境为centos7 64位.
一。安装erlang

su -c 'rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm'
sudo yum install erlang

二。安装rabbitmq

我们是用CentOS7(RHEL7也一样),可以从这里:http://fedoraproject.org/wiki/EPEL/FAQ#howtouse 找到安装有erlang的RHEL7(CentOS同)软件仓库并安装:

wget -c http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.0/rabbitmq-server-3.5.0-1.noarch.rpm

sudo rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
sudo yum install rabbitmq-server-3.5.0-1.noarch.rpm

三。启用rabbitmq

sudo chkconfig rabbitmq-server on

As an administrator, start and stop the server as usual using /sbin/service rabbitmq-server stop/start/etc.

sudo /sbin/service rabbitmq-server start

注意:如果通过上面的start命令启动失败,就检查一下下面的端口是否被占用,否则服务启动不了:

  • 4369(epmd), 25672(Erlang distribution)
  • 56725671(AMQP 0-9-1 without and with TLS)
  • 15672(if management plugin is enabled)
  • 6161361614(if STOMP is enabled)
  • 18838883(if MQTT is enabled)

使用rpm安装完rabbitmq后,默认在/etc/rabbitmq/目录里是没有rabbitmq.config文件的,你可以手动创建,也可以复制一份默认的配置文件(/usr/share/doc/rabbitmq-server-3.5.0/rabbitmq.config.example )

默认只允许guest用户通过localhost本机访问,远程是无法访问的,而一般服务器不安装桌面的,所以我们需要配置允许远程访问.

四。启用管理插件,这样可以通过浏览器访问(http://www.rabbitmq.com/management.html#configuration)

rabbitmq-plugins enable rabbitmq_management

可以看到15672端口已在监听。

http://www.rabbitmq.com/access-control.html

================================
RabbitMQ

wget “http://pypi.python.org/packages/source/s/simplejson/simplejson-2.0.9.tar.gz#md5=af5e67a39ca3408563411d357e6d5e47”
tar zxvf simplejson-2.0.9.tar.gz
cd simplejson-2.0.9
python setup.py build
python setup.py install

Continue reading

消息队列在虎扑网的应用

高级消息队列协议(AMQP)是一个异步消息传递所使用的应用层协议规范。作为线路层协议,而不是API(例如JMS),AMQP 客户端能够无视消息的来源任意发送和接受信息。现在,已经有相当一部分不同平台的服务器和客户端可以投入使用。

AMQP的原始用途只是为金融界提供一个可以彼此协作的消息协议,而现在的目标则是为通用消息队列架构提供通用构建工具。因此,面向消息的中间件 (MOM)系统,例如发布/订阅队列,没有作为基本元素实现。反而通过发送简化的AMQ实体,用户被赋予了构建例如这些实体的能力。这些实体也是规范的一 部分,形成了在线路层协议顶端的一个层级:AMQP模型。这个模型统一了消息模式,诸如之前提到的发布/订阅,队列,事务以及流数据,并且添加了额外的特 性,例如更易于扩展,基于内容的路由。

其它同类软件:

  • OpenAMQ
  • Apache ActiveMQ
  • ZeroMQ
  • AMQP infrastructure

利用PHP操作Linux消息队列完成进程间通信

当我们开发的系统需要使用多进程方式运行时,进程间通信便成了至关重要的环节。消息队列(message queue)是Linux系统进程间通信的一种方式。

关于Linux系统进程通信的概念及实现可查看:http://www.ibm.com/developerworks/cn/linux/l-ipc/

关于Linux系统消息队列的概念及实现可查看:http://www.ibm.com/developerworks/cn/linux/l-ipc/part4/
PHP的sysvmsg模块是对Linux系统支持的System V IPC中的System V消息队列函数族的封装。我们需要利用sysvmsg模块提供的函数来进进程间通信。先来看一段示例代码_1: Continue reading

Web应用中的轻量级消息队列

作者:老王
Web应用中为什么会需要消息队列?主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达mysql,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。在Web2.0的时代,高并发的情况越来越常见,从而使消息队列有成为居家必备的趋势,相应的也涌现出了很多实现方案,像Twitter以前就使用RabbitMQ实现消息队列服务,现在又转而使用Kestrel来实现消息队列服务,此外还有很多其他的选择,比如说:ActiveMQ,ZeroMQ等。
上述消息队列的软件中,大多为了实现AMQP,STOMP,XMPP之类的协议,变得极其重量级,但在很多Web应用中的实际情况是:我们只是想找到一个缓解高并发请求的解决方案,不需要杂七杂八的功能,一个轻量级的消息队列实现方式才是我们真正需要的。 Continue reading

基于HTTP协议的轻量级开源简单队列服务:HTTPSQS

[文章作者:张宴 本文版本:v1.6.0 最后修改:2011.04.21 转载请注明原文链接:http://blog.s135.com/httpsqs/]

HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key/Value 数据库来做数据的持久化存储。

项目网址:http://code.google.com/p/httpsqs/

使用文档:http://blog.s135.com/httpsqs/

使用环境:Linux(同时支持32位、64位操作系统,推荐使用64位操作系统)

软件作者:张宴

队列(Queue)又称先进先出表(First In First Out),即先进入队列的元素,先从队列中取出。加入元素的一头叫“队头”,取出元素的一头叫“队尾”。利用消息队列可以很好地异步处理数据传送和存储,当你频繁地向数据库中插入数据、频繁地向搜索引擎提交数据,就可采取消息队列来异步插入。另外,还可以将较慢的处理逻辑、有并发数量限制的处理逻辑,通过消息队列放在后台处理,例如FLV视频转换、发送手机短信、发送电子邮件等。 Continue reading