面试题:MQ

一、常见的mq产品

RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMqRabbitMQ: One broker to queue them all | RabbitMQhttps://www.rabbitmq.com/

二、作用(面试题) 为什么用MQ?

1、异步处理

2、应用解耦

3、流量削峰

三、交换机类型(面试题)

1、Direct Exchange

直连型交换机,根据消息携带的路由键将消息投递给对应队列。

2、Fanout Exchange

扇型(广播)交换机,这个交换机没有路由键概念,就算你绑了路由键也是无视的。 这个交换机在接收到消息后,会直接转发到绑定到它上面的所有队列。

3、Topic Exchange

主题交换机,这个交换机其实跟直连交换机流程差不多,但是它的特点就是在它的路由键和绑定键之间是有规则的。

四、面试题: 你们是如何保证消息不丢失的?

使用死信队列来保证消息不丢失

五、面试题: ++Rabbitmq怎么保证消息的可靠性?++

1.消费端消息可靠性保证

1.消息确认(Acknowledgements)

消费者在接收到消息后,默认情况下RabbitMQ会自动确认消息(autoAck=true)。为保证消息可靠性,可以设置autoAck=false,使得消费者在处理完消息后手动发送确认(basicAck)。如果消费者在处理过程中发生异常或者未完成处理就终止运行,那么消息在超时时间内将不会被删除,会再次被RabbitMQ投递给其他消费者。

2.死信队列(Dead Letter Queue)

当消息不能被正常消费时(比如达到最大重试次数),可以通过设置TTL(Time To Live)或者死信交换器(Dead Letter Exchange)将消息路由至死信队列,从而有机会后续分析和处理这些无法正常消费的消息。

2.生产端消息可靠性保证:

  1. 消息持久化

当生产者发布消息时,可以选择将其标记为持久化(persistent).这意味着即使 RabbitMQ 服务器重启,消息也不会丢失,因为它们会被存储在磁盘上。

  1. 确认(Confirm)机制

开启confirm回调模式后,RabbitMQ会在消息成功写入到磁盘并至少被一个交换器接受后,向生产者发送一个确认(acknowledgement)。若消息丢失或无法投递给任何队列,RabbitMQ将会发送一个否定确认(nack). 生产者可以根据这些确认信号判断消息是否成功送达并采取相应的重试策略。

RabbitMQ作为消息中间件并启用publisher confirms(发布者确认)与publisher returns(发布者退回)机制时,可以确保消息从生产者到交换机的投递过程得到更准确的状态反馈。

相关推荐
星星落进兜里6 小时前
中间件面试题
中间件
刘逸潇200515 小时前
中间件与CORS(基于fastapi)
中间件·fastapi
好玩的Matlab(NCEPU)19 小时前
Redis vs RabbitMQ 对比总结
数据库·redis·rabbitmq
好玩的Matlab(NCEPU)20 小时前
消息队列RabbitMQ、Kafka、ActiveMQ 、Redis、 ZeroMQ、Apache Pulsar对比和如何使用
kafka·rabbitmq·activemq
鸽鸽程序猿1 天前
【RabbitMQ】简介
分布式·rabbitmq
Micra5201 天前
8 款企业微信 SCRM 工具功能对比分析
中间件
EndingCoder2 天前
MongoDB基础与Mongoose ODM
服务器·javascript·数据库·mongodb·中间件·node.js
9ilk2 天前
【同步/异步 日志系统】--- 介绍
后端·中间件
-睡到自然醒~2 天前
[go 面试] 前端请求到后端API的中间件流程解析
前端·中间件·面试
患得患失9492 天前
【NestJS】中间件与管道:请求处理双雄对决
中间件