RabbitMQ 安装
我这里安装是使用阿里云的 CentOS7.5 来安装的, 使用 CentOS 版本低于 7 的可能会报错.
1. 安装 rabbitmq 所需要的依赖包
输入 $ yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc- c++ kernel-devel m4 ncurses-devel tk tc xz
2. 下载安装包
- $ wget www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.CentOS.x86_64.rpm
- $ wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
- $ wget www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.noarch.rpm
3. 安装服务命令
- # 第一步: 安装 erlang 语言环境
- $ rpm -ivh erlang-18.3-1.el7.CentOS.x86_64.rpm
- # 第二步: 安装 socat 加解密软件
- $ rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm
- # 第三步: 最后安装 rabbitmq
- $ rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm
4. 修改配置文件
# 第一步: 查找 rabbit.App, 并编辑改文件
修改: loopback_users 中的 <<"guest">>, 只保留 guest(不修改只能通过 localhost 访问)
- #第二步, 修改 rabbitmq-env.conf 文件
- $ VIM /etc/rabbitmq/rabbitmq-env.conf
添加 NODENAME=rabbit
5. 安装插件, 保证浏览器可以访问
$ rabbitmq-plugins enable rabbitmq_management
6. 启动服务
- $ rabbitmq-server start &
- $ rabbitmqctl start_app
打开浏览器, 输入我们的地址加端口 15672, 就可以看到我们的页面了, 账号密码都是 guest, 登录进来是这样的.
说了这么多, 还没说这个玩意是做什么的呢~! 我第一次接触这个我也懵, 完全不懂得是做什么的, 我们先来看一下他能做什么吧.
RabbitMQ(暂不说实际场景, 后面说场景, 现在说场景怕自己给自己说懵圈了) 主要是传递消息, 就是什么意思呢, 看个图.
简单来说就是这样的, 通过我们的 RabbitMQ 将我们的数据发送到其它的服务器上去, 让服务器得到我们的消息, 有人会问为什么不直接传递, 也可以直接传递, 但是服务器达到一定数量, 你是维护起来成本很高的, 而且还需要可靠性的投递呢? 代码实现起来是复杂的.
我们再来打开黑色的盒子看一下里面的东西.
我们来说几个名词, 有图了更容易理解和记忆
1:server : 又称为 broker, 接受客户端连接, 实现 amqp 实体服务
2:exchange 交换机: 消息直接投递到交换机上, 然后交换机根据消息的路由 key 来路由到对应绑定的队列上
3:baingding: 绑定 exchange 与 queue 的虚拟连接, bingding 中可以包含 route_key
4:route_key 路由 key , 他的作用是在交换机上通过 route_key 来把消息路由到哪个队列上
5:queue: 队列, 用于来保存消息的载体, 有消费者监听, 然后消费消息
就是我们的数据服务 A 通过网络通道, 到达 exchange 交换机, 通过路由 route_key 来把消息发送到哪个队列上, 提供给我们的下游服务使用, 左面的叫上游服务, 右面的叫下游服务.
交换机 exchange
这里还得继续说点枯燥的理论, 交换机分为三种, 直接交换机, 扇形交换机和我们的 Topic 交换机, 也叫做话题交换机. 来举三个栗子.
直接交换机:
就是说, 携带我们的 routing Key 通过我们的路由匹配到我们的 routing Key 就能到达我们的的 Queue 队列下, 接收到我们发送过来的消息.
扇形交换机
通过我们的交换机, 只要订阅了我们的交换机 Exchange, 就可以收到我们的消息.
Topic 交换机
需要匹配我们的 routing Key, 这里的匹配模式有两种,* 和 #,* 表示值匹配一层, 一层就是.. 之间就叫做一层, 比如啊, top.xiaocai.java, 这时我们匹配 top.xiaocai.* 即可匹配到, 而我们匹配 top.* 则不可匹配. 再就是我们的 #是全匹配, 还是 top.xiaocai.java 的例子, 这时我们匹配 top.xiaocai.# 即可匹配到, 而我们匹配 top.# 也可匹配到. 我们来看一个图
就是一个匹配的规则, 其实不难的.
命令行
我们再来看几个命令行的使用
查看用户列表 rabbitmqctl list_users, 即可得到我们的用户列表了, 前面是用户名, 括号内的是用户对应的角色.
输入 rabbitmqctl add_user xiaocaijava 123456, 添加我们的新用户, 前面 xiaocaijava 是用户名, 123456 是密码.
设置 rabbitmq 用户的角色 rabbitmqctl set_user_tags xiaocaijava administrator
输入 rabbitmqctl delete_user xiaocaijava, 即可删除我们的用户, 注意别把 guest 用户删了, 不然会很麻烦.
后面的我就大概说一下, 不是很重要, 会用即可.
为用户设置权限: rabbitmqctl set_permissions -p < 虚拟机 > < 用户名 > ".*" ".*" ".*"
列出用户权限: rabbitmqctl list_user_permissions xiaocai
清除用户权限 rabbitmqctl clear_permissions -p < 虚拟机 > < 用户名 >
修改用户密码 rabbitmqctl change_password 用户名 新密码
虚拟主机操作
rabbitmqctl add_vhost /cloudmall 增加一个虚拟主机
rabbitmqctl list_vhosts; 查看所有的虚拟主机
rabbitmqctl list_permissions -p /cloudmall 查看虚拟主机的权限
rabbitmqctl delete_vhost /cloudmall 删除虚拟主机
操作队列命令
rabbitmqctl list_queues 查询所有队列
rabbitmqctl -p vhostpath purge_queue blue 清除队列消息
今天只是简单了解一下我们的 RabbitMQ, 后面会详细的去说 RabbitMQ 的作用和 java 相关的使用.
最进弄了一个公众号, 小菜技术, 欢迎大家的加入
来源: https://www.cnblogs.com/cxiaocai/p/11749158.html