-
安装rabbitmq server
apt install rabbitmq-server
开启rabbitmq-server
service rabbitmq-server restart
-
启用rabbitmq web管理插件
rabbitmq自带了很多插件, 都放在
/usr/lib/rabbitmq/lib/rabbitmq_server-3.5.7/plugins
目录下, 可通过rabbitmq-plugins 指令开启
rabbitmq-plugins enable rabbitmq_management
开启后需要重启rabbitmq-server服务才会生效。
Web管理访问地址:
打开界面后发现需要账号密码才能进去, 在老版本是可以用guest账号进去, 但是在新版本中禁用掉了。
所以需要先创建账号:
rabbitmqctl add_user admin admin
然后给账号分配角色:
rabbitmqctl add_user admin admin
最后还需要给账号分配权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
关于rabbitmq的角色参考:
https://www.cnblogs.com/mingaixin/p/4134920.html
-
使用rabbitmq发送消息
生产者:
producer.php
require_once __DIR__ . '/vendor/autoload.php';
//建立连接
$connection = new \PhpAmqpLib\Connection\AMQPStreamConnection('172.17.0.2', 5672, 'admin', 'admin');
//创建channel
$channel = $connection->channel();
//声明队列
$channel->queue_declare('test');
//定义消息对象
$msg = new \PhpAmqpLib\Message\AMQPMessage('Hello World');
//发布消息
$channel->basic_publish($msg, '', 'test');
echo 'Send message';
//关闭channel
$channel->close();
//关闭连接
$connection->close();
消费者:
consumer.php
require_once __DIR__ . '/vendor/autoload.php';
$connection = new \PhpAmqpLib\Connection\AMQPStreamConnection('172.17.0.2', 5672, 'admin', 'admin');
$chanel = $connection->channel();
$chanel->queue_declare('test');
$callback = function ($msg) {
echo ' [x] Received ', $msg->body, "\n";
};
$chanel->basic_consume('test', '', false, true, false, false, $callback);
while (count($chanel->callbacks)) {
echo 'wait';
$chanel->wait();
}