05-RabbitMQ 面试题-mk

文章目录

  • 1.RabbitMQ 核心组件及功能详解
  • 2.RabbitMQ-如何保证消息不丢失?
  • 3.RabbitMQ消息的重复消费问题如何解决的?
  • 4.RabbitMQ中死信交换机 ? (RabbitMQ延迟队列有了解过嘛)
  • 5.RabbitMQ如果有100万消息堆积在MQ , 如何解决(消息堆积怎么解决)
  • 6.RabbitMQ的高可用机制有了解过嘛
  • 7.RabbitMQ如何保证消息的有序性?
  • 8.RabbitMQ有哪些消息处理模式(订阅模式或工作模式)?

1.RabbitMQ 核心组件及功能详解

RabbitMQ 核心组件及功能详解

2.RabbitMQ-如何保证消息不丢失?

消息中间件的好处

  • 提供了系统之间的异步调用,让服务与服务之间解耦
  • 削峰、填谷

场景:

  • 异步发送(验证码、短信、邮件…)
  • MySQL和Redis , ES之间的数据同步
  • 分布式事务
  • 削峰填谷

在这里插入图片描述
消息发送者(publisher )把消息发送给交换机(exchange),由交换机路由到队列,最后由消费者(consumer)进行消费消息。

出现消息丢失的四种情况:

  • 消息未到达交换机
  • 消息未到达队列
  • 队列中消息丢失
  • 消费者未接收到消息

生产者确认机制(解决消息未到达交换机、消息未到达队列问题)

RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。消息发送到MQ以后,会返回一个结果(ack)给发送者,表示消息是否处理成功
在这里插入图片描述
如果消息发送失败,有两种情况:

  • 消息到达交换机失败(publisher-confirm nack)
  • 交换机路由到队列失败(publisher-return ack)

消息失败之后如何处理呢?

  • 回调方法即时重发(知道哪一个消息发送失败,可以再发)
  • 记录日志(如果还是发送失败,可以记录日志,通过查看日志进行补偿)
  • 保存到数据库然后定时重发,成功发送后即刻删除表中的数据

如果重发失败了怎么办?

  • 一般消息发送失败了,很大几率是服务提供者宕机了或者是MQ宕机了,这两者不可能一直处于宕机状态。
  • 如果还是不能解决,需要人工来解决这些问题

消息已经正常发送到队列,但是MQ 宕机了,也会导致消息丢失,该怎么解决?

消息持久化(解决队列中消息丢失问题)
MQ默认是内存存储消息,开启持久化功能可以确保缓存在MQ中的消息不丢失。(MQ宕机或重启后,在内存中的消息肯定会丢失,需要持久化)

1.交换机持久化:

@Bean
public DirectExchange simpleExchange(){  
// 三个参数:交换机名称、是否持久化、当没有queue与其绑定时是否自动删除
return new DirectExchange("simple.direct", true, false);
}

2.队列持久化:

@Bean 
public Queue simpleQueue(){     
// 使用QueueBuilder构建队列,durable就是持久化的     
return QueueBuilder.durable("simple.queue").build(); 
}

3.消息持久化,SpringAMQP中的的消息默认是持久的,可以通过MessageProperties中的DeliveryMode来指定的:

Message msg = MessageBuilder
.withBody(message.getBytes(StandardCharsets.UTF_8)) //消息体
.setDeliveryMode(MessageDeliveryMode.PERSISTENT) //持久化
.build()

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

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

相关文章

产品需求设计评审会:三步精准定位需求核心

“不谋全局者,不足谋一域;不谋万世者,不足谋一时。”——陈澹然 强调了从全局和长远的角度去谋划事情的重要性,与产品设计中先从宏观层面定位需求,而不是陷入细节的理念相契合。 今日清晨,我参加了一场产品…

java中常用的集合 - 面试篇

HashMap 一、基础常量以及结构 //数组默认初始容量static final int DEFAULT_INITIAL_CAPACITY 1 << 4; // aka 16//数组容量最大值static final int MAXIMUM_CAPACITY 1 << 30;//默认扩容因子static final float DEFAULT_LOAD_FACTOR 0.75f;//链表长度阈值 树…

PDF解析示例代码学习

以下是结合多种技术实现的PDF解析详细示例&#xff08;Python实现&#xff09;&#xff0c;涵盖文本、表格和扫描件处理场景&#xff1a; 一、环境准备与依赖安装 # 核心依赖库 pip install pdfplumber tabula-py pytesseract opencv-python mysql-connector-python 二、完整…

Docker容器网络与NAT

一、背景 之前分享关于NAT网络地址转换的相关文章&#xff0c;docker中的网络正好使用到了NAT&#xff0c;顺带着把这个分享一下&#xff0c;分析docker容器的网络数据包流出、数据流入原理分析。 知识回顾: docker运行一个容器之后&#xff0c;会给这个容器一个独立的netns网络…

Spring Boot 热部署详解,包含详细的配置项说明

Spring Boot 热部署详解 1. 热部署简介 热部署&#xff08;Hot Deployment&#xff09;允许在应用运行时修改代码或配置文件&#xff0c;无需重启应用即可使更改生效。Spring Boot 通过 spring-boot-devtools 模块实现这一功能&#xff0c;其核心依赖于 LiveReload 技术和自动…

详细解读 box-sizing: border-box;

代码解读 * {box-sizing: border-box; } 解释&#xff1a; * - 这是CSS的通用选择器&#xff0c;表示匹配文档中的所有元素 box-sizing: border-box; - 设置元素的盒模型计算方式为border-box 盒模型说明&#xff1a; 默认情况下&#xff0c;CSS使用content-box盒模型&…

《一文讲透》第7期:KWDB 巧用标签与索引优化查询性能

引言 在工业物联网快速发展的今天&#xff0c;各类智能传感器设备已广泛应用于智能制造、能源电力、智慧城市等关键领域。这些设备以极高的采样频率持续产生监测数据&#xff0c;使得单条产线每秒产生数十万条传感器数据已成为行业常态&#xff0c;这对数据存储系统的写入吞吐…

哈希扩展——一致性哈希

目录 一、什么是一致性哈希 二、一致性哈希原理 2.1 hash 环 三、服务器扩容场景 3.1 服务器增加 3.2 服务器减少 3.3 使用虚拟节点 四、 一致性哈希的使用场景 一、什么是一致性哈希 一致性哈希是一种哈希算法&#xff0c;用于将数据分布到不同的节点或存储区域&…

arcgis几何与游标(1)

本节我们对几何进行展开学习 ArcPy 的几何对象 在 ArcPy 中&#xff0c;几何对象是表示地理空间数据的核心。它包括点&#xff08;Point&#xff09;、多点&#xff08;Multipoint&#xff09;、线&#xff08;Polyline&#xff09;和面&#xff08;Polygon&#xff09;等类型…

分布式热点网络

核心设计理念&#xff1a; 在自然灾害&#xff08;地震、洪水、台风&#xff09;、极端环境&#xff08;无人区&#xff09;及网络管制&#xff08;欠费停机&#xff09;等场景下&#xff0c;传统中心化网络易因核心节点失效导致全局瘫痪。本方案提出构建去中心化设备网络&…

【5G学习】基本概念之多频资源以及子载波和信道

在5G通信中&#xff0c;子载波、信道以及时域、频域、码域、空域是构建无线传输系统的核心概念。它们共同定义了信号的传输方式、资源分配和多维复用技术。以下是详细解释及其相互关系&#xff1a; 一、核心概念定义 1. 子载波&#xff08;Subcarrier&#xff09; 定义&#…

Coze 和 n8n 的详细介绍及多维度对比分析,涵盖功能、架构、适用场景、成本等关键指标

以下是 Coze 和 n8n 的详细介绍及多维度对比分析&#xff0c;涵盖功能、架构、适用场景、成本等关键指标&#xff1a; 一、Coze 详细介绍 1. 基础信息 类型&#xff1a;低代码自动化平台&#xff08;SaaS&#xff09;。开源性&#xff1a;闭源&#xff08;企业版需付费&…

分发饼干问题——用贪心算法解决

目录 一&#xff1a;问题描述 二&#xff1a;解决思路 贪心策略&#xff08;C语言&#xff09;算法复习总结3——贪心算法-CSDN博客 三&#xff1a;代码实现 四&#xff1a;复杂度分析 一&#xff1a;问题描述 分发饼干问题是一个经典的可以使用贪心算法解决的问题&#xf…

【Python爬虫】简单案例介绍4

本文继续接着我的上一篇博客【Python爬虫】简单案例介绍3-CSDN博客 目录 3.4 完整代码 3.4 完整代码 此小节给出上述案例的完整代码&#xff0c; # encodingutf-8 import re, json, requests, xlwt, csv import pandas as pd from lxml import etree from bs4 import Beauti…

使用ADB工具分析Android应用崩溃原因:以闪动校园为例

使用adb工具分析模拟器或手机里app出错原因以闪动校园为例 使用ADB工具分析Android应用崩溃原因&#xff1a;以闪动校园为例 前言 应用崩溃是移动开发中常见的问题&#xff0c;尤其在复杂的Android生态系统中&#xff0c;找出崩溃原因可能十分棘手。本文将以流行的校园应用&q…

【蓝桥云课】男女搭配 python

题目 题目 题解 import mathT int(input()) for _ in range(T):N, M, K map(int, input().split())people_num N M# 目前为止可以组成的队数group_num min(N // 2, M)if people_num - group_num * 3 < K:group_num-math.ceil((K-(people_num - group_num * 3))/3)pr…

edge 更新到135后,Clash 打开后,正常网页也会自动跳转

发现了一个有意思的问题&#xff1a;edge 更新135后&#xff0c;以前正常使用的clash出现了打开deepseek也会自动跳转&#xff1a; Search Resultshttps://zurefy.com/zu1.php#gsc.tab0&gsc.qdeepseek &#xff0c;也就是不需要梯子的网站打不开了&#xff0c;需要的一直正…

MCP协议实战指南:在VS Code中实现PostgreSQL到Excel的自动化迁移

作者&#xff1a;后端小肥肠 &#x1f34a; 有疑问可私信或评论区联系我。 &#x1f951; 创作不易未经允许严禁转载。 姊妹篇&#xff1a; 从PDF到精准答案&#xff1a;Coze助力RAGFlow框架提升数据召回率_提升ragflow-CSDN博客 CozeTreeMind实测&#xff1a;秒出ISO标准流程图…

大模型微调(PEFT)

大模型微调&#xff08;PEFT&#xff09; PEFT&#xff08;Parameter-Efficient Fine-Tuning&#xff09;一、PEFT 核心方法1. LoRA&#xff08;Low-Rank Adaptation&#xff09;2. Adapter3. Prefix Tuning4. Prompt Tuning5. QLoRA&#xff08;Quantized LoRA&#xff09; 二…

flutter 打包mac程序 dmg教程

✅ 前提条件 ✅ 你已经在 macOS 上安装了 Android Studio Flutter SDK。 ✅ Flutter 支持 macOS 构建。 运行下面命令确认是否支持&#xff1a; Plain Text bash 复制编辑 flutter doctor ---## &#x1f9f1; 第一步&#xff1a;启用 macOS 支持如果是新项目&#xff0c;…