Java面试题精选:消息队列(三)

news2024/9/22 15:30:41

1、RabbitMQ中的vhost起什么作用?

(1)vhost本质上就是一个mini版的mq服务器(虚拟消息服务器)。
有自己的队列、交换器和绑定,最重要的,拥有独立的权限机制,可以做到vhost范围的用户控制。
(2)Vhost提供了逻辑上的分离,可以将众多客户端进行区分,又可以避免队列和交换器的命名冲突。
(3)Vhost必须在连接时指定,rabbitmq包含缺省vhost:“/”,通过缺省用户和口令guest进行访问。
(4)rabbitmq里创建用户,必须要被指派给至少一个vhost,并且只能访问被指派内的队列、交换器和绑定。
(5)Vhost必须通过rabbitmq的管理控制工具创建。在这里插入图片描述

2、RabbitMQ上的一个queue中存放的message是否有数量限制?限制是多少

默认情况下一般是无限制,因为限制取决于机器的内存,但是消息过多会导致处理效率的下降。
可以通过参数来限制:

  • x-max-length :对队列中消息的条数进行限制 ,
  • x-max-length-bytes :对队列中消息的总量进行限制

3、说一说RabbitMQ中的AMQP

AMQP 协议即高级消息队列协议
RabbitMQ就是 AMQP 协议的 Erlang 的实现(当然 RabbitMQ 还支持 STOMP2、 MQTT3 等协议)。
AMQP 的模型架构和 RabbitMQ 的模型架构是一样的,生产者将消息发送给交换器,交换器和队列绑定 。
RabbitMQ 中的交换器、交换器类型、队列、绑定、路由键等都是遵循的 AMQP 协议中相 应的概念。
在这里插入图片描述

4、RabbitMQ开启持久化机制,有什么要注意的点?

(1)开启持久化后,效率会变低;
(2)开启持久化需要交换器、队列、消息三者都需要持久化;
队列(队列本身【名称、源数据】、队列消息)、交换器、绑定关系都需要开启持久化
在这里插入图片描述

5、RabbitMQ中交换器4种类型?

(1)Fanout(广播): 把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中。
在这里插入图片描述
(2)Direct(直接交换器):把消息路由到BindingKey和RoutingKey完全匹配的队列中。
在这里插入图片描述
(3)Topic(主题):
匹配规则

  • RoutingKey 为一个点号’.'分隔的字符串。比如: java.xiaoka.show
  • BindingKey和RoutingKey一样也是点号“.“分隔的字符串。
  • BindingKey可使用 * 和 # 用于做模糊匹配,*匹配一个单词,#匹配多个或者0个
    在这里插入图片描述
    (4)headers:忽略routing_key的一种路由方式,不处理路由键,是根据发送消息内容中的headers属性进行匹配。性能差,基本用不到。(几乎与Direct差不多,不实用,一般会忽略,基本被Direct取代)

6、Rocketmq如何保证高可用性?

  1. 架构层面
    避免用单节点或者简单的一主一从架构,可以采取多主从的架构,并且主从之间采用同步复制的方式进行数据双写。
  2. 刷盘策略
    RocketMQ默认的异步刷盘,可以改成同步刷盘SYNC_FLUSH。
  3. 生产消息的高可用
    当消息发送失败了,在消息重试的时候,会尽量规避上一次发送的 Broker,选择还没推送过该消息的Broker,以增大消息发送的成功率。
  4. 消费消息的高可用
    消费者获取到消息之后,可以等到整个业务处理完成,再进行CONSUME_SUCCESS状态确认,如果业务处理过程中发生了异常那么就会触发broker的重试机制。

7、RocketMq的存储机制了解吗?

  消息生产者发送消息到broker,都是会按照顺序存储在CommitLog文件中,每个commitLog文件的大小为1G
在这里插入图片描述

CommitLog-存储所有的消息元数据,包括Topic、QueueId以及message
CosumerQueue-消费逻辑队列:存储消息在CommitLog的offset
IndexFile-索引文件:存储消息的key和时间戳等信息,使得RocketMq可以采用key和时间区间来查询消息
也就是说,rocketMq将消息均存储在CommitLog中,并分别提供了CosumerQueue和IndexFile两个索引,来快速检索消息

8、RocketMq性能比较高的原因?

  1. 顺序写
    顺序写比随机写的性能会高很多,不会有大量寻址的过程
  2. 异步刷盘
    相比较于同步刷盘,异步刷盘的性能会高很多
  3. 零拷贝
    使用mmap的方式进行零拷贝,提高了数据传输的效率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2101607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VoxEdit 比赛|创作农场灵感资产

为大家带来另一场 VoxEdit 迷你比赛!在一周时间内创建可用资产! 主题:踏入农场世界,使用 VoxEdit 创建农场主题资产。 从古朴的农舍到可爱的鸡舍,甚至是充满胡萝卜的农田。 你将专注于捕捉农场生活的精髓&#xf…

计算机毕业设计Spark+PyTorch知识图谱中药推荐系统 中药数据分析可视化大屏 中药爬虫 机器学习 中药预测系统 中药情感分析 大数据毕业设计

创新点:知识图谱、大数据虚拟机、可视化大屏、python爬虫、lstm深度学习情感分析、sparkhadoophive离线计算实时计算全部实现、前后台完整、支付宝沙箱支付、短信、AI识别、4-20种推荐算法、中药价格机器学习预测算法等上百种创新点 开发技术:spark hiv…

如何从 Bak 文件中恢复 SQL数据库?(3种方法)

如何从 .bak 文件恢复 SQL数据库? 在数据库管理和维护过程中,数据的安全性和完整性至关重要。备份文件(.bak 文件)是 SQL Server 中常用的数据库备份格式,它包含了数据库的完整副本,用于在数据丢失、系统故…

在线思维导图怎么快速绘制?5个软件帮助你绘制思维导图不求人

在线思维导图怎么快速绘制?5个软件帮助你绘制思维导图不求人 在线绘制思维导图是整理思路、计划项目、或者学习新知识的绝佳方式。通过使用专门的软件和工具,你可以快速、便捷地创建出清晰的思维导图。以下是五款在线思维导图工具,可以帮助你…

惠中科技PV-Wiper全自动光伏组件清洁系统:智能清洁赋能光伏产业

在全球绿色能源转型的浪潮中,光伏产业作为清洁能源的重要支柱,正以前所未有的速度发展。然而,光伏组件的清洁维护问题一直是制约其发电效率与使用寿命的关键因素。针对这一挑战,惠中科技凭借其深厚的行业积累和技术创新实力&#…

C++基础多态

目录 学习内容: 1. 多态 1.1 多态的实现 1.2 函数重写(override) 1.3 虚函数 1.4 使用多态实现的实例 1.5 虚函数的底层实现 1.6 重载(voerload)、重写(override)和隐藏(h…

数据结构,单向链表

数据结构是计算机科学中的一个核心概念,它研究的是数据的组织、管理和存储方式,以及在这些数据上进行操作时的算法。数据结构为数据的高效访问和修改提供了基础。 数组(Array):一种线性数据结构,可以存储固…

kubeadm方式安装k8s

⼀、安装环境 1. 安装说明 本次以⼆进制⽅式安装⾼可⽤ k8s 1.28.0 版本,但在⽣产环境中,建议使⽤⼩版本⼤于 5 的 Kubernetes 版本,⽐如 1.19.5 以后。 2. 系统环境 3. ⽹络及版本环境 注:宿主机⽹段、Pod ⽹段、Service ⽹段…

项目管理利器:2024五款精选项目管理软件深度解析

在项目管理这个纷繁复杂的领域中摸爬滚打二十年,我见证了无数项目从策划到实施,再到成功交付的全过程。在这个过程中,项目管理软件如同导航灯塔,为团队指明了方向,提高了效率,降低了风险。今天,…

Spring声明式事务使用详情(知识点+案例)

目录 1、声明式事务的概念 2、Spring事务管理器 3、基于注解的Spring事务 4、Spring事务属性 4.1只读(Read-Only) 4.2事务超时(Timeout) 4.3事务异常回滚(rollbackFor) 4.4事务隔离级别&#xff08…

如何用Java SpringBoot打造助农捐赠平台?2025年25届毕业生必看+最新设计实现攻略!

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

【深度学习与NLP】——词嵌入Embedding技术

目录 1.词嵌入的作用 2.嵌入矩阵的计算 3.Embedding层的代码实验 词嵌入(Embedding)技术是一种将词汇映射到低维连续向量空间的方法。将离散的单词数据处理成连续且固定长度的向量,使模型可以学习和处理语义信息。 假设需要将["Are&…

终于有人把数据中台讲明白了

在大数据发展的黄金期,几乎所有的高科技企业都在思考一个问题:海量数据作为大多数企业发展不可避免的一个趋势之后,企业该怎么去应用这部分数据资产,会对其商业产生什么影响,如何使数据对企业产生正面的推动而不是成为…

【Oracle APEX开发小技巧 7】解决初始化数据在动态操作-变更中被识别跳出弹窗的问题

在开发时有一个场景——推送开关数据来自于初始化动态操作,理论上只有变更的时候才会有二次提示,但是因为初始化会触发变更,所以会有弹窗,这不是我们想要的结果,有什么办法在初次回显数据不跳出提示吗?​​…

day-48 分割回文串

思路 利用dfs算法,用ids表示当前所指向字符的位置,依次判断s.charAt(ids),s.charAt(ids)s.charAt(ids1)…是否为回文字符串,如果是则加入链表p,再递归调用dfs函数 解题过程 每次调用dfs函数后记得还原现场 Code class Solution {public St…

【STM32+HAL库】---- 基础定时器中断控制LED

硬件开发板:STM32G0B1RET6 软件平台:cubemaxkeilVScode1 新建cubemax工程 1.1 配置系统时钟RCC 1.2 配置LED LED由PA5引脚控制,选择PA5引脚,选择GPIO_Output模式 1.3 定时时间的计算 T ( 预分频系数 1 ) ( 重装载值 1 ) 时…

RedisStack十部曲之二:Redis的核心概念

文章目录 键空间修改和查询键键过期遍历键空间 客户端缓存在计算机科学中有两个难题客户端缓存的Redis实现跟踪模式的工作机制统一的键命名空间 两种连接方式缓存策略Opt-in 模式Opt-out 模式广播模式NOLOOP选项避免竟态条件当与服务器失去连接怎么办什么值得缓存 流水线请求/响…

【2024 CCF编程能力等级认证(GESP)C++ 】 计算机基础知识

目录 1. 引言2. 计算机系统结构2.1 中央处理器(CPU - Central Processing Unit)2.1.1 运算器 2.1.2 控制器2.1.3 性能指标2.2 存储器2.3 输入设备2.4 输出设备 3. 计算机系统层次结构4. 操作系统4.1 操作系统分类4.2 操作系统常见操作4.2.1 基本开关机操…

SpringBoot实现文件内容对比

背景 在上一篇博客中,我实践了WORD转换成PDF/TXT的实现方式,本周接到一个新的需求,恰好就用上了这个成果。需求如下:客户提供一个WORD范本给用户,用户范本进行修改后,再反馈给客户。反馈的成果多种多样&…

RocketMQ消息回溯实践与解析

文章目录 1 问题背景2 验证2.1 生产者启动2.2 消费者启动2.3 执行回溯2.4 结果验证2.5 验证小结2.5.1 分析参数2.5.2 思考 3 分析3.1 策略模式,解析命令行3.2 创建客户端,与服务端交互3.3 获取topic对应的broker地址,提交重置请求3.4 与 name…