RabbitMQ的基本使用(Web管理界面)

515 阅读3分钟

前言

消息队列主要有三个作用:

  1. 解耦:生产者(系统A)只需发布消息到消息队列,无需关心消费者(系统B、系统C、...)的数量、架构、改动等,实现系统间的解耦;
  2. 异步:请求发送到系统A时,系统A处理必要业务之后,将后续非必要业务(发送短信、邮件等)直接发布到消息队列,由消费者异步执行;
  3. 削峰:短时间大量请求发送到系统A,系统A将任务发布到消息队列,由消费者陆续执行,防止短时间大量对数据库的操作导致数据库崩溃;

消息协议包括:

  1. JMS:Java消息服务,只适用于Java平台,实现有ActiveMQ
  2. AMQP:高级消息队列协议,跨平台,实现有RabbitMQ

一、安装

注意:RabbitMQErlang语言环境的对应关系,请查看RabbitMQ官网

二、基本结构和概念

概念图出自尚硅谷的《谷粒商城》: image.png

  • Publisher:生产者,发布消息
  • Broker:消息服务器,即当前RabbitMQ服务
  • Consumer:消费者,消费消息
  • Exchange:交换机,消息先经过Exchange交换机,然后根据消息头的route-key路由键,转发到符合路由规则的Queue队列
  • Queue:队列,存储消息
  • BindingQueue队列和Exchange交换机的绑定关系
  • Message:消息,包括消息头和体,消息头中包含route-key路由键
  • Connection:网络连接
  • Channel:信道,一条连接包含多条信道
  • VHost:虚拟主机,由RabbitMQ内部实现的隔离环境,不同虚拟主机之间的Exchange交换机、Queue队列互不影响

三、交换机类型

目前共四种类型:directfanouttopicheaders

3.1 direct交换机(直接)

image.png

消息的route-key路由键与Binding绑定关系完全一致时,交换器就将消息发到对应的队列中

3.2 fanout交换机(广播)

image.png

直接忽略消息的route-key路由键,将消息广播到所有绑定的队列中,fanout交换机转发消息是最快的

3.3 topic交换机(订阅)

image.png

绑定关系中包含通配符#*,消息的route-key路由键符合绑定关系通配符规则的队列都能接收到消息,通配符规则如下:

  • #:一个或多个单词,例如:usa.#可以匹配到usa.news.fack
  • *:一个单词,例如:usa.*可以匹配到usa.news

3.4 headers交换机(直接)

headers交换机匹配AMQP消息的header而不是路由键,.headers交换机和direct交换机完全一致,但性能差很多,目前几乎用不到了,忽略。

四、可视化Web界面的使用

4.1 登录

RabbitMQ的默认服务端口为5672,可视化Web管理界面端口为15672,默认用户名密码均为:guest,本地Windows安装的访问地址为:localhost:15672

image.png

登录成功后,菜单如下:

image.png

4.2 菜单-Overview

主页预览界面:

image.png

4.3 菜单-Exchange

交换机管理界面:

image.png

点击已有交换机名称,即可进入交换机的详情页,如下:

image.png

image.png

4.4 菜单-Queue

队列管理界面:

image.png

点击已有队列名称,即可进入队列的详情页,如下:

image.png

image.png