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

利用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