1、初识消息队列

初始RabbitMQ

  • 核心思想:接受并转发消息。你可以把它想象成一个邮局
  • producer(发送者) : p
  • queue(存放来自producer的消息):
  • consumer(消费者):c
  • p→queue→c

    消息队列,MQ,MessageQueue

  • 说明叫消息队列

  • MQ(Message Queue):先进先出的数据结构
  • Enqueue:进列
  • Dequeue:出列
  • 消息存储

    消息队列的特性

  • 业务无关

  • FIFO:先进先出
  • 容灾:可持久化消息
  • 性能

    为什么要使用消息队列?

  • 系统解耦

  • 异步调用
  • 流量削峰:队列里面会积压很多消息

    2、RabbitMQ的特点和核心概念

    RabbitMQ的特点

  • 开源、跨语言

  • Erlang语言编写
  • 应用广泛
  • 社区活跃、API活跃

    AMQP协议

  • Advanced Message Queuing Protocol:高级消息队列协议,是一种专门面向消息中间件的开放式协议

image.png

RabbitMQ核心概念

  • Server :服务
  • connection:与Server建立连接
  • channel:信道,几乎所有的操作都在信道上进行,客户端可以建立多个信道
  • message:消息,有properties(消息属性)和body(消息实体)组成
  • virtual host:虚拟主机,顶层隔离。同一个虚拟主机下,不能有重复的交换机和queue
  • Exchange:交换机,接受生产者的消息的,然后根据指定的路由器去把消息转发到所绑定的队列上
  • binding:绑定交换机和队列
  • routing key:路由键,路由规则,虚拟机可以用它来确定这个消息如何进行一个路由
  • queue:队列,消费者只需要监听队列来消费消息,不需要关注消息来自于那个Exchange
  • Exchange 和 Message Queue存在着绑定的关系,一个Exchange可以绑定多个消息队列

    消息流转过程

    image.png

    3、RabbitMQ的安装和启动

    安装Erlang

  • erlang-rpm包,该包经过RibbitMQ官方处理

  • 使用Erlang Solutions源进行安装

    安装RabbitMQ

  • 导入密钥

  • 下载rpm安装包
  • 下载完成后,安装

    启动RabbitMQ

  • 启动RabbitMQ:systemctl start rabbitmq-server

  • 查看状态:rabbitmqctl status
  • 停止:rabbitmqctl stop
  • 开机启动:systemctl enable rabbitmq-server

    RabbitMQ的管理后台

  • 概览页面(Overview)

  • 添加用户
  • 创建虚拟主机

    4、实战案例演示

  • 多个消费者

    • 循环调度
    • 公平派遣
    • 消息确认

      5、交换机

      交换机工作模式

  • fanout:广播,这种模式只需要将队列绑定到交换机上即可,是不需要设置路由键的。

  • direct:根据RoutingKey匹配消息路由到指定的队列
  • topic:生产者指定RoutingKey消息根据消费者指定的队列,通过模糊匹配的方式进行相应转发。
    • *可以代替一个单词
    • 可以代替零个或多个单词

  • headers(几乎不用):根据发送消息内容中的Headers属性来匹配