当前位置: 首页 > news >正文

面试题:MQ

 一、常见的mq产品

RabbitMQRocketMQKafka、ActiveMQ、ZeroMQ、MetaMq

RabbitMQ: One broker to queue them all | RabbitMQicon-default.png?t=N7T8https://www.rabbitmq.com/

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

1、异步处理

2、应用解耦

3、流量削峰

三、交换机类型(面试题

1、Direct Exchange

直连型交换机,根据RoutingKey(路由键)路由到不同的队列

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(发布者退回)机制时,可以确保消息从生产者到交换机的投递过程得到更准确的状态反馈。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • seata的使用(SpringBoot项目整合seata)
  • RabbitMQ-消息队列延迟队列一
  • Dockerfile搭建LNMP
  • Linux安装jdk8,tomcat和mysql
  • 【layUI】只能选某个特定区间的日历
  • 24/8/18算法笔记 目标导向强化学习
  • 【C++】C++11新增特性
  • Fabric:关于链码的编写及部署的问题记录
  • 在CodeBlocks搭建SDL2工程OLED液晶模拟器虚拟OLED单色液晶(128x64)
  • 使用MongoDB构建AI:Story Tools Studio将生成式AI引入Myth Maker AI游戏
  • vue中点击导航栏,动态改变样式,经典写法
  • Linux网络:基于OS的网络架构
  • 【Kubernetes】k8s集群图形化管理工具之rancher
  • SourceTree远端!无法获取代码
  • 6. 数据结构—串的匹配算法
  • php的引用
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • Docker入门(二) - Dockerfile
  • emacs初体验
  • gf框架之分页模块(五) - 自定义分页
  • Git 使用集
  • HTML-表单
  • Java 23种设计模式 之单例模式 7种实现方式
  • Javascript编码规范
  • JavaScript的使用你知道几种?(上)
  • ng6--错误信息小结(持续更新)
  • rc-form之最单纯情况
  • 高度不固定时垂直居中
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 小程序开发之路(一)
  • 用 Swift 编写面向协议的视图
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • (ZT)出版业改革:该死的死,该生的生
  • (二)丶RabbitMQ的六大核心
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (四)鸿鹄云架构一服务注册中心
  • (算法)N皇后问题
  • (一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别
  • (一一四)第九章编程练习
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)scrum常见工具列表
  • (转)我也是一只IT小小鸟
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .NET BackgroundWorker
  • .net core 6 集成和使用 mongodb
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .Net6使用WebSocket与前端进行通信