xiaoyatouvsanan 2018-11-20
1.首先安装Erlang
[1] 安装依赖组件
yum install epel-release yum install unixODBC unixODBC-devel wxBase wxGTK SDL wxGTK-gl
[2] 可能会出现如下错误erlang >= 19.3 被 rabbitmq-server-3.7.9-1.el7.noarch,通过下面步骤解决
[3] 设置RabbitMQ的依赖源, 编辑/etc/yum.repos.d/rabbitmq-erlang.repo输入以下内容:
[rabbitmq-erlang] name=rabbitmq-erlang baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/7 gpgcheck=1 gpgkey=https://dl.bintray.com/rabbitmq/Keys/rabbitmq-release-signing-key.asc repo_gpgcheck=0 enabled=1
2. 下载RabbitMQ的安装包
# yum clean all # yum makecache # wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.9/rabbitmq-server-3.7.9-1.el7.noarch.rpm
3. yum install rabbitmq-server-3.7.9-1.el7.noarch.rpm
4. 出现的问题
[1] 问题1
Transaction check error: file /usr/bin/epmd from install of erlang-20.3.8.10-1.el7.centos.x86_64 conflicts with file from package esl-erlang-21.1.1-1.x86_64 file /usr/bin/erl from install of erlang-20.3.8.10-1.el7.centos.x86_64 conflicts with file from package esl-erlang-21.1.1-1.x86_64 file /usr/bin/erlc from install of erlang-20.3.8.10-1.el7.centos.x86_64 conflicts with file from package esl-erlang-21.1.1-1.x86_64 file /usr/bin/escript from install of erlang-20.3.8.10-1.el7.centos.x86_64 conflicts with file from package esl-erlang-21.1.1-1.x86_64 file /usr/bin/run_erl from install of erlang-20.3.8.10-1.el7.centos.x86_64 conflicts with file from package esl-erlang-21.1.1-1.x86_64 file /usr/bin/to_erl from install of erlang-20.3.8.10-1.el7.centos.x86_64 conflicts with file from package esl-erlang-21.1.1-1.x86_64:
解决:卸载冲突的组件
yum remove esl-erlang-21.1.1-1.x86_64 esl-erlang-21.1.1-1.x86_64 esl-erlang-21.1.1-1.x86_64 esl-erlang-21.1.1-1.x86_64 esl-erlang-21.1.1-1.x86_64 esl-erlang-21.1.1-1.x86_64 esl-erlang-21.1.1-1.x86_64 esl-erlang-21.1.1-1.x86_64
解决参考网址:https://blog.csdn.net/huijiangu4621/article/details/83619707
5. RabbitMQ 管理
[1] 启动RabbitMQ # rabbitmq-server start # rabbitmqctl stop [2] 用户管理 # rabbitmqctl add_user admin admim # rabbitmqctl delete_user admin # rabbitmqctl list_users # rabbitmqctrl change_password admin admin123 [3] 权限管理 # rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" # rabbitmqctl list_permissions -p / # rabbitmqctl clear_permissions -p / admin 说明: -p /:代表 set_permissions 控制条目应该用到哪个 vhosts 上; admin:代表被授权的用户名字; ".*" ".*" ".*":分别代表配置、读和写权限,而其中的 ".*" 为正则表达式,代表匹配所有权限; [4] 角色管理 # rabbitmqctl set_user_tags admin administrator # rabbitmqctl list_users 说明: 为用户添加权限,已经基本可以满足我们的需求了,但有时,我们可以使用系统预置的角色,为用户赋予角色,那么该用户也就拥有了该角色所赋予的所有权限了,在 RabbitMQ 中,角色大致分为超级管理员、监控者、策略制定者、普通管理者以及其他,它们的区别是什么? (1) 超级管理员(administrator) 可登陆管理控制台(启用managementplugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。 (2) 监控者(monitoring) 可登陆管理控制台(启用managementplugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等) (3) 策略制定者(policymaker) 可登陆管理控制台(启用managementplugin的情况下),同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。 (4) 普通管理者(management) 仅可登陆管理控制台(启用managementplugin的情况下),无法看到节点信息,也无法对策略进行管理。 [5] 启用/禁用Web控制台 # rabbitmq-plugins enable/disabled rabbitmq_management
[6] PHP 与 RabbitMQ 基础操作
(1) 在项目根目录创建 composer.json 文件。内容如下: { "require": { "php-amqplib/php-amqplib": ">=2.6.1" } } (2) $ composer install (3) 然后新建send.php发送消息内容如下: <?php require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLib\Connection\AMQPStreamConnection; use PhpAmqpLib\Message\AMQPMessage; // [1] 创建 RabbitMQ 连接 $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); // [2] 打开一个通道。 $channel = $connection->channel(); // [3] 定义一个队列。 $channel->queue_declare('hello', false, false, false, false); // [4] 创建一条字符串消息对象。 $msg = new AMQPMessage('Hello World!'); // [5] 向队列当中推送一条消息。 $channel->basic_publish($msg, '', 'hello'); echo " [x] Sent 'Hello World!'\n"; // [6] 关闭通道。 $channel->close(); // [7] 关闭连接。 $connection->close(); (4) 接收队列消息并消费 require_once __DIR__ . '/vendor/autoload.php'; use PhpAmqpLib\Connection\AMQPStreamConnection; // [1] 创建 RabbitMQ 连接。 $connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest'); // [2] 打开一个通道。 $channel = $connection->channel(); // [3] 定义一个队列。 $channel->queue_declare('hello', false, false, false, false); echo ' [*] Waiting for messages. To exit press CTRL+C', "\n"; // [4] 定义一个匿名方法处理接收到的消息。 $callback = function($msg) { echo " [x] Received ", $msg->body, "\n"; }; // [5] 设置接收到的消息由谁来消息。 $channel->basic_consume('hello', '', false, true, false, false, $callback); // [6] 循环等待接收队列的消息。 while(count($channel->callbacks)) { $channel->wait(); } (5) 启动脚本 #php receive.php #php php send.php
参考网址: https://www.jianshu.com/p/3528eb0481c8