目录

Rabbitmq理论知识

1 RabbitMQ简介

1.1 是什么
  • 一种开源(MPL)的消息代理
  • 一种面向消息的中间件
  • 一种默认遵循AMQP协议的MQ服务
1.2 做什么
  • 逻辑解耦,异步任务
  • 消息持久化,重启不影响
  • 削峰,大规模数据处理
1.3 特点
  • 可靠性 消息持久化 发布确认 传输确认
  • 可扩展性 多节点集群,可动态更改
  • 多客户端 支持多种编程语言
  • 管理界面 监控&管理
1.4 Docker 安装RabbitMQ
1
2
3
4
5
6
7
8
9
# 1.创建挂载路径
mkdir -p /data/rabbitmq
mkdir: /data/rabbitmq: Read-only file system
错误原因:不能随便在mac根目录下创建文件夹

# 2.安装
改为在用户目录下
mkdir -p ~/data/rabbitmq
docker run -d --name rabbit-server -p 5672:5672 -p 15672:15672 -p 25672:25672 -v ~/data/rabbitmq:/var/lib/rabbitmq rabbitmq:management

2 RabbitMQ关键术语

  • Exchange :交换机,决定消息以什么样的规则路由到哪个队列
  • Queue: 消息的载体,一条消息可以被投递到一个队列或多个队列
  • Binding:绑定,将Exchange和Queue按照路由规则绑定起来
  • Routing key:路由关键字,Exchange 根据这个关键字来投递消息
  • Channel:消息通道,客户端的每个连接都会建立多个通道,用于传递消息
  • Producer:消息生产者,投递消息的程序
  • Consumer:消息消费者,接收消息的程序

3 RabbitMQ的工作原理

消息发布者发布消息到Exchange,Exchange分发信息到绑定的队列上,消费者从队列取数据

https://s1.ax1x.com/2020/09/10/wYKMCt.png

4 Exchange工作模式

  • Fanout :类似于广播,转发到所有绑定到Exchange的上Queue

https://s1.ax1x.com/2020/09/10/wYQdXT.png

  • Direct:类似于单播,需要Routing key 和Binding key 完全绑定

https://s1.ax1x.com/2020/09/10/wYlkvV.png

  • Toic:类似于组播,转发到符合通配符匹配的Queue

https://s1.ax1x.com/2020/09/11/wtFDaV.png

  • Headers:请求头和消息头完全匹配才能接收消息
5 通过管理界面发布订阅消息
  • 创建Exchange,指定Exchanges 名称,工作模式等配置项
  • 创建Quque,指定Queue 名称等配置项
  • 为Exchanges 绑定Queue,并配置 RoutingKey

https://s1.ax1x.com/2020/09/11/wtE856.png

  • 为Queue绑定Exchanges,并配置Routingkey