RabbitMQ is lightweight and easy to deploy on premises and in the cloud. It supports multiple messaging protocols. RabbitMQ can be deployed in distributed and federated configurations to meet high-scale, high-availability requirements.
 
1. 安装: windows安装十分简单,印象中装的过程几乎无障碍,忽略。
centos7安装过程如下:
依赖安装
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel socat
 
安装erlang,务必在下面的地址下载,之前在官网下载,安装总是有问题,浪费了大把时间。
https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7/ 
 
官网下载rabiitmq,rpm安装
rpm -ivh (rpm包)
 
2. 配置 启动rabbitmq
/bin/systemctl start rabbitmq-server.service
 
片刻之后,可以查看状态是否active
bin/systemctl status rabbitmq-server.service
 
cp rabbitmq.config.example /etc/rabbitmq/ cd /etc/rabbitmq/ mv rabbitmq.config.example rabbitmq.config
 
修改成你想要的配置,然后重启。
3. UI 启动
rabbitmq-plugins enable rabbitmq_management
 
然后根据配置打开界面
安全性问题,可以禁止外部guest访问,新建账户
rabbitmqctl add_user puresai 12345678 rabbitmqctl set_user_tags puresai administrator
 
并修改配置:
{loopback_users, [<<”guest”>>]}
 
重启rabbitmq服务。
4. 简单实例 生产者:
<?php /**  * Created by PhpStorm.  * User: puresai  * Date: 2018/11/5  * Time: 10:39  */ // 配置信息 $config = [     host => localhost,     port => 5672,     login => sai,     password => 123456,     vhost=>/ ]; $exName = changes; //交换机名 $route = key; //路由key // 创建连接和channel $conn = new AMQPConnection($config); if (!$conn->connect()) {     die("连接失败"); } $channel = new AMQPChannel($conn); //消息内容 $message = "消息测试"; //创建交换机 $ex = new AMQPExchange($channel); $ex->setName($exName); //发送消息,注意持久化也要设置[delivery_mode => AMQP_DURABLE] for($i=0; $i<5; $i++){     echo "Send Message:".$ex->publish($i.:.$message, $route, AMQP_DURABLE, [delivery_mode => AMQP_DURABLE])." "; } $conn->disconnect(); 
 
消费者:
<?php /**  * Created by PhpStorm.  * User: puresai  * Date: 2018/11/5  * Time: 10:39  */ $config = [     host => localhost,     port => 5672,     login => sai,     password => 123456,     vhost=>/ ]; $exName = changes; //交换机名 $queueMame = queue1; //队列名 $route = key; //路由key // 创建连接和channel $conn = new AMQPConnection($config); if (!$conn->connect()) {     die("连接失败"); } $channel = new AMQPChannel($conn); // 创建交换机 $ex = new AMQPExchange($channel); $ex->setName($exName); $ex->setType(AMQP_EX_TYPE_DIRECT); //direct类型 $ex->setFlags(AMQP_DURABLE); //持久化,很重要 echo "Exchange Status:".$ex->declare()." "; // 创建队列 $queue = new AMQPQueue($channel); $queue->setName($queueMame); $queue->setFlags(AMQP_DURABLE); //持久化 echo "Message Total:".$queue->declare()." "; //绑定交换机与队列,并指定路由键 echo Queue Bind: .$queue->bind($exName, $route)." "; //阻塞模式接收消息 echo "Message: "; while(True){     $queue->consume(processMessage); } $conn->disconnect(); /**  * 消费回调函数  * 处理消息  */ function processMessage($envelope, $queue) {     $msg = $envelope->getBody();     echo $msg." "; //处理消息     $queue->ack($envelope->getDeliveryTag()); //手动发送ACK应答 } 
 
花了些时间,不过弄出来还是感觉不错的。