RabbitMQ快速上手教程

WINDOWS系统

1、安装Erlang语言开发包

  • 下载地址:传送门

  • 配置环境变量 ERLANG_HOME C:\Program Files (x86)\erl5.9 (即erl安装位置)

  • 添加到PATH %ERLANG_HOME%\bin;

2、安装RabbitMQ

提示:中文路径名将会安装失败

  • 下载安装RabbitMQ,下载地址:传送门

  • 配置环境变量 RABBITMQ_SERVER C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-2.8.0 (即rabbitmq_server安装位置)

  • 添加到PATH %RABBITMQ_SERVER%\sbin;

  • 然后到dos(命令提示符)里面切换到RabbitMQ目录下,执行 rabbitmq-plugins.bat enable rabbitmq_management

  • 执行完成之后以管理员身份启动 rabbitmq:依次输入命令:

1
2
3
4
5
rabbitmq-service.bat stop

rabbitmq-service.bat install

rabbitmq-service.bat start
  • 然后,浏览器中输入:127.0.0.1:15672,用户名密码是guest ,如果能登陆就说明安装成功

Manage

  • 到此 RabbitMQ 已经安装完成,接下来针对php安装扩展(非php技术栈可跳过)

3、安装php的amqp扩展

  • 根据phpinfo()的信息去下载相应的amqp扩展DLL版本: 传送门

  • 将压缩包中php_amqp.dll复制到php/ext目录下

  • 然后在php.ini中添加如下代码:

1
2
3
[amqp]

extension=php_amqp.dll
  • 再将压缩包中rabbitmq.1.dll复制到php根目录C:/wampserver/php/(目录和下面配置目录保持一致即可)

  • 然后修改apache配置文件httpd.conf,添加如下代码:

1
2
3
# rabbitmq

LoadFile "C:/wampserver/php/rabbitmq.1.dll"
  • 最后重启服务器. phpinfo() 出现下图说明安装成功:

amqp

Linux系统

1、安装rabbitmq

1
2
3
a) 进入rabbitmq文件的存放目录

b) rpm -ivh rabbitmq-server-3.5.4-1.noarch.rpm

2、修改配置

1
2
3
cd /etc/rabbitmq

cd /usr/share/doc/rabbitmq-server-3.5.4

拷贝

1
cp rabbitmq.config.example /etc/rabbitmq/rabbitmq.config

进入到拷贝的rabbitmq.config目录

修改配置

1
vim rabbitmq.config

修改 {loopback_users, []} 把注释和后面的逗号去掉;

3、启动服务(在etc/rabbitmq目录下执行)

1
service rabbitmq-server start

4、设置开机启动

1
chkconfig rabbitmq-server on

5、开启控制台管理插件

1
rabbitmq-plugins enable rabbitmq_management

6、网页打开

1
http://localhost:15672  默认用户名密码:guest/guest

7、打开端口(程序访问端口5672)

1
2
3
/sbin/iptables -I INPUT -p tcp --dport 15672 -j ACCEPT

/sbin/iptables -I INPUT -p tcp --dport 5672 -j ACCEPT

保存

1
/etc/rc.d/init.d/iptables save

查看端口打开

1
/etc/init.d/iptables status

测试DEMO

安装amqplib扩展 compose.json

1
2
3
4
5
{
"require": {
"php-amqplib/php-amqplib": ">=2.6.1"
}
}

send.php 生产端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

require_once __DIR__ . '/vendor/autoload.php';

use PhpAmqpLib\Connection\AMQPStreamConnection;

use PhpAmqpLib\Message\AMQPMessage;

$connection = new AMQPStreamConnection('locahost', 5672, 'root', 'root'); // 注意此处有账号权限限制

$channel = $connection->channel();

$channel->queue_declare('hello', false, false, false, false);

$msg = new AMQPMessage('Hello World!');

$channel->basic_publish($msg, '', 'hello');

echo " [x] Sent 'Hello World!'\n";

$channel->close();

$connection->close();

receive.php 消费端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

<?php

require_once __DIR__ . '/vendor/autoload.php';

use PhpAmqpLib\Connection\AMQPStreamConnection;

$connection = new AMQPStreamConnection('localhost', 5672, 'root', 'root');

$channel = $connection->channel();

$channel->queue_declare('hello', false, false, false, false);

echo " [*] Waiting for messages. To exit press CTRL+C\n";

$callback = function ($msg) {

echo ' [x] Received ', $msg->body, "\n";

};

$channel->basic_consume('hello', '', false, true, false, false, $callback);

while (count($channel->callbacks)) {

$channel->wait();
}

$channel->close();

$connection->close();
关注作者公众号,获取更多资源!
赏作者一杯咖啡~