RabbitMq理解

常见问题

1 Mq存在的意义
2 Mq常见模式
3 消息怎么路由,消息基于什么传输
4 如何保证RabbitMq消息不丢失
5 如何避免消息重复投递or重复消费
6 Mq如何保证消息顺序执行
7 Mq集群
8 Mq消息积压怎么办
9 Mq中的推与拉
10 设计一个Mq

Mq 存在的意义

消息中间件一般主要用来做 异步处理、
应用解耦、
流量削峰、
日志处理
等方面。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用Mq 来进行消峰的场景:

在这里插入图片描述

在这里插入图片描述
Mq带来的弊端:
在这里插入图片描述

Mq常见模式

RabbitMQ 是一个开源的 AMQP 实现,服务器端用 Erlang 语言编写,支持多种客户端,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。
在这里插入图片描述

在这里插入图片描述
Broker 简单来说就是消息队列服务器实体

在这里插入图片描述
在这里插入图片描述
公平分发就是手动ACK,按照消费者性能进行消费,Mq是不会把消息给到没有Ack的consumer上面的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
topic 主题模式,最主要的功能就是把,不同消息来源的Msg放到同一个队列中。

消息怎么路由,消息基于什么传输

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

如何保证RabbitMq 消息不丢失

消息丢失主要分为:

1 生产者丢失消息、
2 消息列表丢失消息、
3 消费者丢失消息。
在这里插入图片描述
事务机制,是同步进行的。

在这里插入图片描述
消息持久化可以和生产者confirm机制配合使用,但是性能会下降,对于关键业务,保证关键消息的持久化不会导致系统性能瓶颈。

在这里插入图片描述

如何避免消息重复投递或重复消费

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

RabbitMQ 如何保证消息顺序执行

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

RabbitMq 集群

1 单机模式
2 普通集群模式
3 镜像集群模式
在这里插入图片描述
在这里插入图片描述
在N台机器上启动N个实例,创建的queue只会放在一个RabbitMq实例上,但每个Mq实例都同步queue的元数据(queue的配置信息,通过元数据,可以找到queue所在实例)。 让集群中多个节点来服务某个queue的读写操作来提高吞吐量。
在这里插入图片描述

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

死信队列,延迟队列

DeadLettter 是RabbitMq中的一种消息机制,当消费消息时队列里的消息出现了一下情况 消息将成为死信。
死信会被RabbitMq 进行特殊处理,
如果配置了 死信队列信息,那么该消息将会给丢进死信队列中,
如果没有配置,则该消息将会被丢弃

在这里插入图片描述
在这里插入图片描述
通俗理解死信队列:
死信队列,并不是什么特殊队列,只不过是绑定在死信交换机上的队列。死信交换机只不过是用来接收死信的普通交换机。
所以可以为任何类型 Direct,Fanout,Topic。
在这里插入图片描述
在这里插入图片描述
死信消息是RabbitMq 为我们做的一层保障,其实我们也可以不适用死信队列,而是在消息消费异常时,将消息主动投递到另一个交换机中,
在这里插入图片描述
可以从死信队列中拉去消息,然后发送邮件,短信,钉钉等通知开发人员关注,或者将消息重新投递到另一个队列然后设置过期时间,来进行延迟消费。

在这里插入图片描述

延迟队列:
1 延迟队列= 死信队列+TTL
2 可以通过DelayQueue,Quartz,Redis的zset等实现
在这里插入图片描述

MQ 消息挤压怎么办

在这里插入图片描述

MQ中的推拉

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

如何设计一个Mq

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值