文章目录
- 1. 简介
- 1.1 MQ简介
- 1.2 RabbitMQ简介
- 1.3 典型的消息队列处理流程
- 1.4 基本概念
- 2. 安装
- 2.1 erlang的安装
- 2.2 RabbitMQ的安装
- 2.3 RabbitMQ配置插件
- 2.3 RabbitMQ的配置
- 2.3.1 添加用户
- 2.3.1.1 添加用户界面
- 2.3.1.2 添加管理员
- 2.3.1.3 vhost 管理
- 2.3.2 控制台功能介绍
1. 简介
MQ,全称MessageQueue,译为“消息队列”,也称“消息中间件”。
那消息队列主要是用来做啥的呢?以某位大咖的公众号为例,如果某读者订阅(关注)了这个公众号,每当大咖发布新文章的时候,都可以在这个公众号得到通知,这就是一种广播订阅模式。
而公众号如何实现这一点呢? 就可以通过 消息中间件 来轻松实现。
大咖把最新的教程的文章 发给 消息中间件服务器, 读者手机上的微信里的消息中间件客户端,就会自动去把消息获取出来显示,这样就达到了教程广播的效果了。
消息队列用于系统之间解耦,通过高性能消息中间件,提升系统吞吐量,降低导致系统耦合。
当前有各种消息队列,RabbitMQ、Kafka、ActiveMQ等,为什么使用RabbitMQ?
消息队列从使用场景来分为两类:
- 一类是大数据的数据流处理,数据采集者作为生产者数据通过消息队列从到后端处理。这种场景要求高吞吐高并发,Kafka专门为这种场景设计。
- 另一类是消息高可靠低时延在系统之间传递,这种场景要求可靠性高,消息不能丢;要求时延低。AMQP协议专门为这种场景设计,RabbitMQ是AMQP协议实现者之一,也是当前使用的最广的AMQP消息队列。
以一个提供网页转PDF的Web应用为例,描述消息处理流程。
- 用户发送网页转PDF请求到Web应用
- Web应用发送一个消息到RabbitMQ,包括网页内容、用户名、邮箱等
- RabbitMQ的Exchange接收到消息后,将消息路由到某一个队列
- PEF生成器消费队列的消息,生成PDF
- 生产者 Publicsher:消息发布者
- 消费者 Consumer:消息接收者
- 服务器 Broker:Broker是一个物理上的服务器(或虚拟机),它是部署了消息中间件并接收处理客户端请求的实体。
- 队列 Queue:用于存储消息的一块缓存
- 消息 Message :具体的消息内容,一般为String
- 连接 Connection:应用与RabbitMQ Broker之间的TCP连接
- 通道 Channel:连接内的虚拟连接,应用生产或消费队列中的消息时,都是通过Channel完成的
- 绑定 Binding:Queue与Exchange之间连接
- 路由键 Routing Key:Exchange根据Routing Key来决定将消息投递到哪个队列,类似消息的地址
- 用户 User:RabbitMQ连接需要用户密码认证;同时可以给用户设定读、写等权限
- 虚拟主机 Virtual Host:Virtual Host用来区使用同一个RabbitMQ实例的多个应用。connections, exchanges, queues, bindings, user permissions, policies and some other things 都属于Virtual Host。
2. 安装
rabbitMQ 是基于 erlang 语言开发的,就如同 activemq 需要安装 java 环境一样, 为了使用 rabbitMQ 需要安装 erlang环境。
https://www.erlang.org/downloads
下载完后无脑下一步安装即可。
与 jdk类似,也要配置路径,只是不用配置 ERL_HOME,直接配置 PATH就可以了。
右键点击我的电脑-> 属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 系统变量 -> Path
然后增加如图所示的一条新的 路径。 这个路径就是 erlang 安装程序 截图里所用的路径。
使用快捷键 win+r, 然后输入 cmd, 接着运行 erl。 出现如图所示的界面,就表示安装成功了。
https://www.rabbitmq.com/download.html
使用默认设置,下一步下一步即可。安装成功之后,在如图所示位置可以看到这些文件就表示安装OK了。
运行如下命令,可以做到对 rabbitmq的插件配置。
"C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.5\sbin\rabbitmq-plugins.bat" enable rabbitmq_management
在这里重启。
进入http://127.0.0.1:15672
输入
账号: guest
密码: guest
就登陆进去啦
我们添加账号 admin密码 admin tags 选择 admin
我们看到刚添加完成的用户 在 vhost 一栏是没有权限的,所以呢我们这个时候的给他设置一个 vhost,那么这个 vhost 就相当于一个数据库(可以理解为 mysql 里面的一个 db),我们创建一个用户对其用户授权,他就可以访问了
1.点击右侧的菜单进入 vhost 的管理界面
2.点击 Add a new virtual host 添加一个 vhost,在 Rabbitmq 中我们添加 vhost 一般是以”/”开头,那么我们添加一个/lbl 的 vhost;
3.当我们创建这个”vhost_lbl”的 vhost, 就可以对他进行用户授权,我们点击/vhost_mmr,进入其配置界面
在 permission 权限这一栏 我们选择刚刚创建的用户 admin,选择完成后 Set Permission
我们退出 guest 用户,就可以使用刚刚创建的用户 admin 进行登录了
这时候大功告成,创建成功!~
Overview 概览
Connections 连接
我们没有连接 , 这个就好像 jdbc 连接 mysql 一样 如果有程序连接这 ,这时候这里面就能显示哪些机器连接着
这些后面在讲具体的内容的时候 会提到是干什么用的