Linux环境下RabbitMQ消息队列的安装和配置

一、什么是RabbitMQ?
RabbitMQ就是一个在AMQP基础上实现的企业级消息系统,简单的说,就是一个消息队列系统。具体的介绍,可以网上去搜!目前只介绍RabbitMQ在Linux系统的安装。

二、RabbitMQ的安装
1、 RabbitMQ是基于Erlang开发,所以使用之前必须安装Erlang语言开发包。
wget http://www.erlang.org/download/otp_src_17.4.tar.gz
tar -zxvf otp_src_17.4.tar.gz
cd otp_src_17.4
./configure --prefix=/data/klj/erlang #我自己指定位置,可以放到你自己自定义的目录
make && make install
cd /data/klj/erlang/
#设置全局环境
#set erlang environment
#目录/etc/profile,在文件最后加上下面这一句话,并执行source /etc/profile使文件生效
export PATH=$PATH:/data/klj/erlang/bin #修改 ~/.bash_profile
source /etc/profile #使得文件生效
2、安装simplejson
wget https://pypi.python.org/packages/source/s/simplejson/simplejson-3.6.5.tar.gz
tar -zxvf simplejson-3.6.5.tar.gz
cd simplejson-3.6.5
python setup.py install
3、安装rabbitmq
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.2/rabbitmq-server-generic-unix-3.4.2.tar.gz
tar -zxvf rabbitmq-server-generic-unix-3.4.2.tar.gz
cd rabbitmq_server-3.4.2/
cd sbin/
# ./rabbitmq-server -detached #启动rabbitmq的服务,
# ./rabbitmq-server #启动rabbitmq的服务
两种方式都能启动rabbitmq

 ./rabbitmq-plugins enable rabbitmq_management #进入管理模式web
访问地址:http://127.0.0.1:15672/ 
账号: guest  密码:guest
用户配置: http://www.rabbitmq.com/man/rabbitmqctl.1.man.html#
rabbitmqctl add_user konglj 123456 #设定用户名
rabbitmqctl set_user_tags konglj administrator #设定用户类型

4、安装rabbitmq-c
wget https://github.com/alanxz/rabbitmq-c/releases/download/v0.4.1/rabbitmq-c-0.9.0.tar.gz
tar -zxvf rabbitmq-server-generic-unix-3.4.2.tar.gz
cd rabbitmq-c-0.5.2
./configure
make && make install
5、安装php-amqp扩展
yum install librabbitmq-devel.x86_64
wget http://pecl.php.net/get/amqp-1.8.0.tgz
tar -zxvf amqp-1.8.0.tgz
cd amqp-1.8.0
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-amqp
make && make install
注意:这里和php的版本有关,我的是7.2版本,所以选择了1.8.0版本的
接着修改php配置,路径:/usr/local/php/etc/php.ini
在文件后面加上
extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/amqp.so

最后重启服务器和php就可以了
可以通过phpinfo查看是否成功,已成功安装。
Linux环境下RabbitMQ消息队列的安装和配置_第1张图片
6、测试
新建两个文件,rabbit_consumer.php和rabbit_publisher.php
rabbit_consumer.php

  '127.0.0.1',  
    'port' => '5672',  
    'login' => 'guest',  
    'password' => 'guest', 
    'vhost'=>'/' 
);   
$e_name = 'e_linvo'; //交换机名 
$q_name = 'q_linvo'; //队列名 
$k_route = 'key_1'; //路由key 
//创建连接和channel 
$conn = new AMQPConnection($conn_args);

if (!$conn->connect()) {   
    die("Cannot connect to the broker!\n");   
}   
$channel = new AMQPChannel($conn);   
 
//创建交换机    
$ex = new AMQPExchange($channel);   
$ex->setName($e_name); 
$ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型  
$ex->setFlags(AMQP_DURABLE); //持久化 
echo "Exchange Status:".$ex->declare()."\n";   
   
//创建队列    
$q = new AMQPQueue($channel); 
$q->setName($q_name);   
$q->setFlags(AMQP_DURABLE); //持久化  
echo "Message Total:".$q->declare()."\n";   
 
//绑定交换机与队列,并指定路由键 
echo 'Queue Bind: '.$q->bind($e_name, $k_route)."\n"; 
 
//阻塞模式接收消息 
echo "Message:\n";   
while(True){ 
    $q->consume('processMessage');   
    //$q->consume('processMessage', AMQP_AUTOACK); //自动ACK应答  
} 
$conn->disconnect();   
 
/**
 * 消费回调函数
 * 处理消息
 */ 
function processMessage($envelope, $queue) { 
    $msg = $envelope->getBody(); 
    echo $msg."\n"; //处理消息 
    $queue->ack($envelope->getDeliveryTag()); //手动发送ACK应答 
}
?>

rabbit_publisher.php

 '127.0.0.1',  
    'port' => '5672',  
    'login' => 'guest',  
    'password' => 'guest', 
    'vhost'=>'/' 
);   
$e_name = 'e_linvo'; //交换机名 
//$q_name = 'q_linvo'; //队列名 
$k_route = 'key_1'; //路由key 
 
//创建连接和channel 
$conn = new AMQPConnection($conn_args);

if (!$conn->connect()) {   
    die("Cannot connect to the broker!\n");   
}   
$channel = new AMQPChannel($conn);   
 

 
 //创建交换机对象    
$ex = new AMQPExchange($channel);   
$ex->setName($e_name);   
date_default_timezone_set("Asia/Shanghai");
//发送消息 
//$channel->startTransaction(); //开始事务  
for($i=0; $i<5; ++$i){ 
    sleep(1);//休眠1秒
    //消息内容 
    $message = "第".$i."条信息:".date("h:i:sa");  	
    echo "Send Message:".$ex->publish($message, $k_route)."\n";  
} 
//$channel->commitTransaction(); //提交事务 
 
$conn->disconnect();
?>

新建两个命令窗口,如下,则代表成功。
Linux环境下RabbitMQ消息队列的安装和配置_第2张图片
Linux环境下RabbitMQ消息队列的安装和配置_第3张图片

参考文章
http://www.rabbitmq.com/features.html rabbitmq官网
https://github.com/videlalvaro/php-amqplib php-amqplib官网
https://getcomposer.org/doc/00-intro.md#installation-nix composer官网
https://www.cnblogs.com/chunguang/p/5762248.html

你可能感兴趣的:(技术)