MQ总结

31 阅读2分钟

1.MQ什么是消息可靠性?

消息有生产者产生送到MQ,最终被消费者消费完成,这就叫消息可靠性.

RabbitMQ的模型简单模型

pulisher-exchange-queue-consumer

生产者--交换机--队列--消费者

2.消息丢失的几种情况

2.1生成者连接不到MQ

原因:
由于网路不可靠,出现网络波动,生产者暂时连接不到MQ

解决方法:

生产者开启重试策略 ,需在配置文件配置以下信息

image.png

2.2生产者消息未达到交换机

解决方发:

生产者开启confirm策略

image.png 交换机收到消息返回ack 交换机未收到消息返回nack

2.3生产者消息发送到交换机,没有正确路由到队列

开启 return 回调机制,回调机制RabbitMQ只有一个, 没到队列,失败,会被回调

image.png

2.4MQ宕机,队列的消息消失

2.5.消费者收到消息,还没消费,消费者宕机

开启自动ack,并且设置本地重试策略,当本地重试次数耗尽后,失败消息路由到错误队列。

3.如何保证消息不丢失

3.1生产者确认机制

image.png

image.png

3.2持久化机制

image.png

3.33、消费者ack机制

ack取值

image.png manual:手动ack image.png auto:自动ack。

消费消息不出异常,返回ack给MQ。消费消息出异常了,返回nack,把消息重回队列

image.png

image.png

4.消息积压问题

image.png

分析为什么会有消息积压?

image.png

5.MQ与Kafka的区别

image.png

6.死信交换机

如果这个包含死信的队列配置了 dead-letter-exchange 属性,指定了一个交换机,那么队列中的死信就会投递到这个交换机中,而这个交换机称为 死信交换机 (Dead Letter Exchange,检查DLX)。

image.png RabbitMQ如何实现延迟队列?

image.png