RabbitMQ

1 消息中间件概述

1.1 概念

维基百科对消息中间件的解释:面向消息的系统(消息中间件)是在分布式系统中完成消息的发送和接收的基础软件。

消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通 过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信。

异步处理、流量削峰、限流、缓冲、排队、最终一致性、消息驱动等需求的场景都可以使用消息中间件。

在这里插入图片描述

1.2 自定义消息中间件

在这里插入图片描述

1.3 主流消息中间件及选型

当前业界比较流行的开源消息中间件包括:ActiveMQ、RabbitMQ、RocketMQ、Kafka、ZeroMQ等,其中应用最为广泛的要数RabbitMQ、RocketMQ、Kafka这三款在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4 消息中间件应用场景

消息中间件的使用场景非常广泛,比如,12306购票的排队锁座,电商秒杀,大数据实时计算等。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.5 AMQP协议剖析

1.5.1 协议架构

在这里插入图片描述
在这里插入图片描述

1.5.2 AMQP中的概念

在这里插入图片描述

1.5.3 AMQP 传输层架构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2 RabbitMQ架构

2.1 RabbitMQ介绍、概念、基本架构

在这里插入图片描述
在这里插入图片描述

2.1.1 RabbitMQ Exchange类型

RabbitMQ常用的交换器类型有: fanout 、 direct 、 topic 、 headers 四种。

Fanout
会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中,如图:在这里插入图片描述
Direct
direct类型的交换器路由规则很简单,它会把消息路由到那些BindingKey和RoutingKey完全匹配的队列中,如下图:
在这里插入图片描述
Topic
topic类型的交换器在direct匹配规则上进行了扩展,也是将消息路由到BindingKey和RoutingKey相匹配的队列中,这里的匹配规则稍微不同,它约定:
BindingKey和RoutingKey一样都是由"."分隔的字符串;BindingKey中可以存在两种特殊字符“”和“#”,用于模糊匹配,其中"“用于匹配一个单词,”#"用于匹配多个单词(可以是0个)

Headers
headers类型的交换器不依赖于路由键的匹配规则来路由信息,而是根据发送的消息内容中的headers属性进行匹配。在绑定队列和交换器时指定一组键值对,当发送的消息到交换器时,
RabbitMQ会获取到该消息的headers,对比其中的键值对是否完全匹配队列和交换器绑定时指定的键值对,如果匹配,消息就会路由到该队列。headers类型的交换器性能很差,不实用。

2.2 RabbitMQ数据存储

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 RabbitMQ工作流程详解

2.3.1 生产者发送消息的流程

在这里插入图片描述

2.3.2 消费者接收消息的过程

在这里插入图片描述

2.4 Connection 和Channel关系

在这里插入图片描述
在这里插入图片描述

2.5 RabbitMQ工作模式详解

2.5.1 Work Queue

在这里插入图片描述

2.5.2 发布订阅模式

使用fanout类型交换器,routingKey忽略。每个消费者定义生成一个队列并绑定到同一个Exchange,每个消费者都可以消费到完整的消息。

消息广播给所有订阅该消息的消费者。

在这里插入图片描述

2.5.3 路由模式

在这里插入图片描述

2.5.4 direct交换器

分布式系统中有很多应用,这些应用需要运维平台的监控,其中一个重要的信息就是服务器的日志记录。

我们需要将不同日志级别的日志记录交给不同的应用处理。如何解决?
在这里插入图片描述
多重绑定在这里插入图片描述

2.5.5 主题模式

在这里插入图片描述

3 RabbitMQ高级特性解析

3.1 消息可靠性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 TTL机制

在这里插入图片描述
在这里插入图片描述

3.3 死信队列

在这里插入图片描述

3.4 延迟队列

延迟消息是指的消息发送出去后并不想立即就被消费,而是需要等(指定的)一段时间后才触发消费。

在这里插入图片描述

4 RabbitMQ集群与运维

在这里插入图片描述

4.1 RabbitMQ分布式架构模式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2 监控

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值