RabbitMQ必会的8个知识点

1.什么是RabbitMQ?

RabbitMQ是一个开源的消息中间件,用于在不同应用程序之间传递和存储消息。它实现了AMQP(Advanced Message Queuing Protocol)协议,提供了一个可靠的消息传递机制,支持诸如消息持久性、消息发布与订阅、消息路由和消息的顺序性等特性。

2.RabbitMQ是如何保证消息的可靠性传递?

RabbitMQ通过持久性、确认机制和重试机制来保证消息的可靠性传递。

持久性指的是将消息存储在磁盘上,即使RabbitMQ服务器崩溃,也不会丢失消息。

确认机制允许发送方在消息成功发送到队列后收到确认。

重试机制允许消费者处理消息时发生错误时重试处理。

3.RabbitMQ的主要组件是什么?

RabbitMQ的主要组件包括生产者(Producer,发送消息的应用程序)、消息队列(Queue,用于存储消息)、交换器(Exchange,决定将消息发送到哪个队列)、绑定(Binding,连接交换器和队列的规则)和消费者(Consumer,接收和处理消息的应用程序)。

4.RabbitMQ中的Exchange有哪些类型?

RabbitMQ中有四种常用的交换器类型:

Direct Exchange:根据消息的路由键将消息发送到与之完全匹配的队列。

Topic Exchange:根据消息的路由键模式与队列进行匹配。支持通配符匹配。

Fanout Exchange:将消息广播到所有与之绑定的队列,忽略路由键。

Headers Exchange:根据消息的标头来匹配与之绑定的队列。

5.RabbitMQ的消息确认机制是什么?

RabbitMQ提供了消息的确认机制来确保消息被成功接收和处理。生产者消息确认分为两种模式:Confirm模式和事务模式。在Confirm模式下,生产者发送消息并等待RabbitMQ返回确认消息。在事务模式下,生产者发送消息之前先开启事务,然后在消息发送成功后提交事务,或者消息发送失败后回滚事务。

6.使用RabbitMQ有什么好处?

1、服务间高度解耦

2、异步通信性能高

3、流量削峰

7.如何保证RabbitMQ消息的顺序性?

拆分多个queue(消息队列),每个queue(消息队列) 一个consumer(消费者),就是多一些queue(消息队列)而已,确实是麻烦点;

或者就一个queue (消息队列)但是对应一个consumer(消费者),然后这个consumer(消费者)内部用内存队列做排队,然后分发给底层不同的worker来处理。

8.如何保证消息不被重复消费?

在写入消息队列的数据做唯一标示,消费消息时,根据唯一标识判断是否消费过;

相关推荐
heimeiyingwang1 天前
【架构实战】消息队列选型与异步架构设计:从Kafka到RabbitMQ,一次聊透
架构·kafka·rabbitmq
水无痕simon2 天前
6、六大工作模式-2
java·rabbitmq
lazy H2 天前
不同的消息队列有什么区别?Kafka、RabbitMQ、RocketMQ、Pulsar、ActiveMQ 选型对比
后端·中间件·kafka·rabbitmq·rocketmq
IT机器猫3 天前
RabbitMQ基础二
java·spring boot·分布式·spring cloud·log4j·rabbitmq·springamqp
水无痕simon3 天前
3 RabbitMQ基础
分布式·rabbitmq·ruby
番茄炒鸡蛋加糖4 天前
RabbitMQ 全套复盘 + Nacos+ES+MyBatis-Plus 梳理
分布式·rabbitmq
城管不管6 天前
重生——第九次面试2026.8.13某车一面
分布式·ai·面试·职场和发展·rabbitmq
apgk16 天前
基于Canal实现mysql数据同步到消息队列(RabbitMQ/Kafka)详细操作教程
docker·kafka·rabbitmq
Rain的Java大神之路6 天前
MQ重复消费问题怎么解决
java·经验分享·后端·面试·架构·rabbitmq·rocketmq
hard_hot6 天前
RabbitMQ异步下单架构设计
java·rabbitmq·java-rabbitmq