文章目录

  • 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应用为例,描述消息处理流程。

消息队列满了怎么快速发出去_消息队列满了怎么快速发出去

  1. 用户发送网页转PDF请求到Web应用
  2. Web应用发送一个消息到RabbitMQ,包括网页内容、用户名、邮箱等
  3. RabbitMQ的Exchange接收到消息后,将消息路由到某一个队列
  4. PEF生成器消费队列的消息,生成PDF

消息队列满了怎么快速发出去_后端_02

  • 生产者 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消息队列满了怎么快速发出去_消息队列满了怎么快速发出去_03
       下载完后无脑下一步安装即可。
       与 jdk类似,也要配置路径,只是不用配置 ERL_HOME,直接配置 PATH就可以了。
       右键点击我的电脑-> 属性 -> 高级系统设置 -> 高级 -> 环境变量 -> 系统变量 -> Path
       然后增加如图所示的一条新的 路径。 这个路径就是 erlang 安装程序 截图里所用的路径。
消息队列满了怎么快速发出去_消息队列_04
       使用快捷键 win+r, 然后输入 cmd, 接着运行 erl。 出现如图所示的界面,就表示安装成功了。
消息队列满了怎么快速发出去_消息队列满了怎么快速发出去_05

       https://www.rabbitmq.com/download.html

消息队列满了怎么快速发出去_后端_06


       使用默认设置,下一步下一步即可。安装成功之后,在如图所示位置可以看到这些文件就表示安装OK了。

消息队列满了怎么快速发出去_消息队列满了怎么快速发出去_07

       运行如下命令,可以做到对 rabbitmq的插件配置。

"C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.5\sbin\rabbitmq-plugins.bat" enable rabbitmq_management

消息队列满了怎么快速发出去_消息队列满了怎么快速发出去_08


消息队列满了怎么快速发出去_消息中间件_09


       在这里重启。

       进入http://127.0.0.1:15672

       输入

       账号: guest

       密码: guest

       就登陆进去啦

消息队列满了怎么快速发出去_RabbitMQ_10

消息队列满了怎么快速发出去_消息队列_11

消息队列满了怎么快速发出去_消息队列满了怎么快速发出去_12


       我们添加账号 admin密码 admin tags 选择 admin

       我们看到刚添加完成的用户 在 vhost 一栏是没有权限的,所以呢我们这个时候的给他设置一个 vhost,那么这个 vhost 就相当于一个数据库(可以理解为 mysql 里面的一个 db),我们创建一个用户对其用户授权,他就可以访问了

       1.点击右侧的菜单进入 vhost 的管理界面

消息队列满了怎么快速发出去_消息队列_13


       2.点击 Add a new virtual host 添加一个 vhost,在 Rabbitmq 中我们添加 vhost 一般是以”/”开头,那么我们添加一个/lbl 的 vhost;

消息队列满了怎么快速发出去_消息中间件_14


       3.当我们创建这个”vhost_lbl”的 vhost, 就可以对他进行用户授权,我们点击/vhost_mmr,进入其配置界面

消息队列满了怎么快速发出去_消息中间件_15


       在 permission 权限这一栏 我们选择刚刚创建的用户 admin,选择完成后 Set Permission

消息队列满了怎么快速发出去_后端_16


       我们退出 guest 用户,就可以使用刚刚创建的用户 admin 进行登录了

消息队列满了怎么快速发出去_消息队列_17


       这时候大功告成,创建成功!~

消息队列满了怎么快速发出去_消息队列满了怎么快速发出去_18


       Overview 概览

消息队列满了怎么快速发出去_后端_19

       Connections 连接

消息队列满了怎么快速发出去_RabbitMQ_20


       我们没有连接 , 这个就好像 jdbc 连接 mysql 一样 如果有程序连接这 ,这时候这里面就能显示哪些机器连接着

消息队列满了怎么快速发出去_消息队列满了怎么快速发出去_21


       这些后面在讲具体的内容的时候 会提到是干什么用的