1、初识消息队列
初始RabbitMQ
- 核心思想:接受并转发消息。你可以把它想象成一个邮局
- producer(发送者) : p
- queue(存放来自producer的消息):
- consumer(消费者):c
-
消息队列,MQ,MessageQueue
说明叫消息队列
- MQ(Message Queue):先进先出的数据结构
- Enqueue:进列
- Dequeue:出列
-
消息队列的特性
业务无关
- FIFO:先进先出
- 容灾:可持久化消息
-
为什么要使用消息队列?
系统解耦
- 异步调用
-
2、RabbitMQ的特点和核心概念
RabbitMQ的特点
开源、跨语言
- Erlang语言编写
- 应用广泛
-
AMQP协议
Advanced Message Queuing Protocol:高级消息队列协议,是一种专门面向消息中间件的开放式协议
RabbitMQ核心概念
- Server :服务
- connection:与Server建立连接
- channel:信道,几乎所有的操作都在信道上进行,客户端可以建立多个信道
- message:消息,有properties(消息属性)和body(消息实体)组成
- virtual host:虚拟主机,顶层隔离。同一个虚拟主机下,不能有重复的交换机和queue
- Exchange:交换机,接受生产者的消息的,然后根据指定的路由器去把消息转发到所绑定的队列上
- binding:绑定交换机和队列
- routing key:路由键,路由规则,虚拟机可以用它来确定这个消息如何进行一个路由
- queue:队列,消费者只需要监听队列来消费消息,不需要关注消息来自于那个Exchange
Exchange 和 Message Queue存在着绑定的关系,一个Exchange可以绑定多个消息队列
消息流转过程
3、RabbitMQ的安装和启动
安装Erlang
erlang-rpm包,该包经过RibbitMQ官方处理
-
安装RabbitMQ
导入密钥
- 下载rpm安装包
-
启动RabbitMQ
启动RabbitMQ:systemctl start rabbitmq-server
- 查看状态:rabbitmqctl status
- 停止:rabbitmqctl stop
开机启动:systemctl enable rabbitmq-server
RabbitMQ的管理后台
概览页面(Overview)
- 添加用户
-
4、实战案例演示
多个消费者
fanout:广播,这种模式只需要将队列绑定到交换机上即可,是不需要设置路由键的。
- direct:根据RoutingKey匹配消息路由到指定的队列
- topic:生产者指定RoutingKey消息根据消费者指定的队列,通过模糊匹配的方式进行相应转发。
- headers(几乎不用):根据发送消息内容中的Headers属性来匹配