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

2023年rabbitMq面试题汇总2(5道)

一、如何确保消息接收⽅消费了消息?

接收⽅消息确认机制:消费者接收每⼀条消息后都必须进⾏确认(消息接收和消息确认是两个不同操作)。只有消费者确认了消息,RabbitMQ才能安全地把消息从队列中删除。

这⾥并没有⽤到超时机制,RabbitMQ仅通过Consumer的连接中断来确认是否需要重新发送消息。也就是说,只要连接不中断,RabbitMQ给了Consumer⾜够⻓的时间来处理消息。

特殊情况:

1、如果消费者接收到消息,在确认之前断开了连接或取消订阅,RabbitMQ会认为消息没有被分发,然后重新分发给下⼀个订阅的消费者。(可能存在消息重复消费的隐患,需要根据bizId去重)

2、如果消费者接收到消息却没有确认消息,连接也未断开,则RabbitMQ认为该消费者繁忙,将不会给该消费者分发更多的消息。

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

在消息⽣产时,MQ内部针对每条⽣产者发送的消息⽣成⼀个inner-msg-id,作为去重和幂等的依据(消息投递失败并重传),避免重复的消息进⼊队列;在消息消费时,要求消息体中必须要有⼀个bizId(对于同⼀业务全局唯⼀,如⽀付ID、订单ID、帖⼦ID等)作为去重和幂等的依据,避免同⼀条消息被重复消费。

三、消息基于什么传输?

由于TCP连接的创建和销毁开销较⼤,且并发数受系统资源限制,会造成性能瓶颈。RabbitMQ使⽤信道的⽅式来传输数据。信道是建⽴在真实的TCP连接内的虚拟连接,且每条TCP连接上的信道数量没有限制。

1、RabbitMQ采⽤类似NIO(Non-blocking I/O)做法,选择TCP连接复⽤,不仅可以减少性能开销,同时也便于管理。

2、每个线程把持⼀个信道,所以信道服⽤了Connection的TCP连接。同时RabbitMQ可以确保每个线程的私密性,就像拥有独⽴的连接⼀样。

四、消息如何分发?

若该队列⾄少有⼀个消费者订阅,消息将以循环(round-robin)的⽅式发送给消费者。每条消息只会分发给⼀个订阅的消费者(前提是消费者能够正常处理消息并进⾏确认)。

五、消息怎么路由?

从概念上来说,消息路由必须有三部分:交换器、路由、绑定。⽣产者把消息发布到交换器上;绑定决定了消息如何从交换器路由到特定的队列;消息最终到达队列,并被消费者接收。

1、消息发布到交换器时,消息将拥有⼀个路由键(routing key),在消息创建时设定。

2、通过队列路由键,可以把队列绑定到交换器上。

3、消息到达交换器后,RabbitMQ会将消息的路由键与队列的路由键进⾏匹配(针对不同的交换器有不同的路由规则)。

4、如果能够匹配到队列,则消息会投递到相应队列中;如果不能匹配到任何队列,消息将进⼊ “⿊洞”。

http://www.lryc.cn/news/778.html

相关文章:

  • 电视剧《狂飙》数据分析,正片有效播放市场占有率达65.7%
  • cas单点登录后重定向次数过多问题以及调试cas-dot-net-client
  • 【监控】Prometheus(普罗米修斯)监控概述
  • opencv+python物体检测【03-模仿学习】
  • 计算机科学基础知识第二节讲义
  • openssl genrsa 命令详解
  • C语言标准 —— C89(C90)、C99、C11、C17、C2X
  • 基于Java+Dubbo设计的智能公交查询系统
  • go语言的并发编程
  • 亚马逊要求UL94防火测试阻燃测试标准及项目
  • ClickHouse 合并树表引擎 MergeTree 原理分析
  • 用YOLOv8推荐的Roboflow工具来训练自己的数据集
  • 三层交换机【实验】
  • Anolis 8.6 部署 Kafka 3.3.1 安装和测试(二)
  • sed和awk
  • 使用STM32 CUBE IDE配置STM32F7 用DMA传输多通道ADC数据
  • linux 学习(持续更新)
  • Nacos【一】Nacos集群部署配置
  • “亚洲一号”也能上市?REITs背后的物流设施风起云涌
  • 2023养老展,CBIAIE第十届中国北京国际老年产业博览会
  • 【Android -- 每日一问】现在 Android 怎么学?学什么?
  • JVM垃圾回收
  • clickhouse集群安装
  • Zookeeper入门
  • JavaScript
  • .gitignore 常用忽略规则
  • Vue路由 —— vue-router
  • Java Jackson TypeReference获取泛型类型信息【泛型】
  • Python 核心笔记(二)
  • Hadoop集群搭建