实用指南:消息队列 MQ

news/2025/10/14 11:31:35/文章来源:https://www.cnblogs.com/lxjshuju/p/19140298

将从 ​是什么(What)、为什么(Why)、有哪些(Which)、怎么用(How)​​ 这四个维度,全面解析消息队列(MQ)

一、是什么(What)?—— 核心定义

消息队列(Message Queue, MQ)​​ 是一种异步的进程间通信(IPC)机制,用于在分布式系统或应用程序之间传递消息。

允许把它想象成一个邮局或快递站​:

  • 生产者​:就像寄件人,把包裹(消息)送到快递站(队列)。
  • 队列​:就像快递站的分拣中心,临时存放包裹,并按照“先进先出”的规则管理。
  • 消费者​:就像收件人,随时可以去快递站取走属于自己的包裹。

核心特点是:​生产者发送完消息后无需等待消费者立即处理,行继续执行其他任务,从而实现异步通信。

二、为什么(Why)?—— 核心价值与适用场景

使用消息队列主要为了解决传统系统架构中的一些痛点,它带来了四大核心价值:

  1. 应用解耦

    • 问题​:框架A应该调用环境B、C、D的接口。同时环境B、C、D需要A传递的信息。假设系统B挂了,或者要增加一个体系E,系统A就必须修改代码、重启,耦合严重。
    • 解决方案​:系统A只需把消息发到MQ,系统B、C、D各自从MQ订阅消息。系统A不需要调用系统B、C、D的接口。彼此不直接通信,一个系统挂掉不影响消息发送,其他系统恢复后可能继续处理。​系统间通过MQ这个“信箱”通信,而不是直接打电话
  2. 异步处理

    • 问题同步的(等上一步做完再做下一步),用户需要等待很长时间才能看到注册成功提示(A)。就是​:用户注册(A)后,需要写数据库(B)、发邮件(C)、发短信(D)、送积分(E)。如果所有步骤都
    • 解决方案​:注册服务只需将“注册的信息”写入MQ,就能够直接返回“注册成功”给用户。发邮件、发短信等服务异步地从MQ消费消息。​极大缩短了主流程的响应时间,提升了用户体验
  3. 流量削峰

    • 问题​:秒杀活动开始时,瞬时流量会爆发式增长,远超数据库和处理服务的处理能力,容易导致系统被冲垮。
    • 解决方案​:将所有请求放入MQ,消息队列作为缓冲区,后端服务按照自己能处理的最大速度,从MQ中逐步拉取消息进行处理。​将瞬时的巨大流量变得平滑,保护后端系统
  4. 顺序保证与最终一致性

    • 问题​:在分布式系统中,如何保证多个操作按顺序执行?如何保证数据最终一致?
    • 解决方案​:很多MQ能保证消息的顺序性。同时,通过消息队列,许可将一个分布式事务拆分为多个本地事务,通过重试等机制保证数据最终一致。

三、有哪些(Which)?—— 主流消息队列产品

市面上有多种优秀的消息队列,各有侧重,适用于不同场景。

产品名所属公司/社区核心特点适用场景
KafkaApache超高吞吐量、分布式、持久化、水平扩展能力强。​更像一个实时大数据流平台日志收集、流式数据处理、监控素材、实时分析。
RabbitMQMozilla (Erlang)成熟稳定、功能丰富(帮助多种消息协议如AMQP)、社区活跃、管理界面友好。企业级应用、对消息可靠性要求高的场景(如金融、电商业务)。
RocketMQ阿里巴巴高吞吐、高可用、分布式,源自阿里,历经“双十一”考验,Java系集成友好。电商交易、金融业务等对顺序和一致性有要求的场景。
ActiveMQApache老牌产品,支持JMS协议,效果全面。传统的企业级应用,中小型项目。
PulsarApache云原生设计,计算与存储分离,高扩展性,低延迟。多租户场景、云环境、函数式计算。

简单选型建议​:

  • 需要极高吞吐和流处理​:选 ​Kafka
  • 业务逻辑解耦,需要高可靠性和丰富功能​:选 ​RabbitMQ
  • 公司主要用Java技术栈,业务复杂:选 ​RocketMQ

四、怎么用(How)?—— 基本使用模式

尽管不同MQ的API不同,但其核心编程模型是相通的。以下是使用MQ的基本步骤:

核心概念
  • Producer​:消息生产者,负责发送消息。
  • Consumer​:消息消费者,负责接收和处理消息。
  • Broker​:消息队列的服务端实例,负责存储和转发消息。
  • Topic / Queue​:消息的类别或目的地。Producer发送到Topic,Consumer从Queue订阅。

a. 安装并启动MQ服务器

b. 下载工具库​

c. 编写生产者(Producer)​

d. 编写消费者(Consumer)​

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

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

相关文章

2025 年最新推荐高性价比实木家具厂家排行榜:涵盖实木床餐边柜/餐桌斗柜/书柜/梳妆台/床头柜/餐椅沙发/休闲椅优质厂家精选

当前实木家具市场繁杂,消费者挑选时常常陷入困境。众多品牌质量参差不齐,贴皮冒充纯实木、环保认证掺假等问题频发,价格跨度大且专业辨别难度高,让消费者难以找到高性价比产品。为解决这些难题,帮助消费者在选购实…

多智能体微服务实战(3/4):Aspire 打造本地 K8s 开发环境

开发6个微服务需要6个终端窗口?.NET Aspire让你一行命令启动所有服务!本文实战演示Aspire的核心价值:自动服务发现、统一配置管理、可视化Dashboard、分布式追踪。从本地开发到生产部署(Azure Container Apps),彻…

2025 年液位计厂家最新推荐排行榜:投入式 / 磁致伸缩 / 防爆 / 防水 / 浮球液位计优质企业全面解析

在工业生产、水利工程、石油化工等众多领域,液位计是保障生产安全、提升运营效率的核心设备,其性能优劣直接影响企业生产流程的稳定性与资源利用的合理性。当前液位计市场品牌繁杂,既有技术成熟的老牌企业,也有新兴…

智表 ZCELL 公式引擎,帮你解锁自定义函数与跨表计算的强大能力

智表ZCELL创新性地解决了数据处理中的两大痛点:自定义函数和跨表计算。其公式引擎支持用户根据业务需求编写专属函数,通过简单代码即可实现复杂计算逻辑,同时采用类似Excel的跨表引用语法,轻松实现多表数据联动计算…

2025 年水下打捞公司服务推荐榜:水下打捞手机/水下打捞黄金/水下打捞戒指/水下打捞沉船/水下打捞转头,聚焦专业与高效,助力解决各类水下应急需求

随着水上交通、水利工程及民用水下作业需求的不断增加,水下打捞服务已从传统工程领域逐步延伸至民用应急场景,涵盖沉船处置、设备打捞及个人贵重物品(如手机、黄金、戒指等)找回等多个方向,2025 年市场规模预计持…

SAP 中物料视图必填字段(用下程序定期校验)

最近在作一个定时任务,每天扫描物料主数据的质量,保证所有必填字段要录下正确; 活到老,学到老。

一文读懂Optimism,Arbitrum,ZK Rollups 共识算法

Optimism (OP) 共识算法详细解析 Optimism 作为 Ethereum Layer 2 (L2) 乐观rollup解决方案,其共识算法主要依赖于乐观执行模型:交易在 L2 上假设有效执行,并批量提交到 Ethereum Layer 1 (L1) 以继承其安全性。核心…

【光照】UnityURP渲染中的HDR

《Unity URP中的HDR渲染技术解析》摘要:本文深入探讨Unity通用渲染管线(URP)中HDR渲染的核心原理与实现。HDR通过浮点纹理存储光照信息,解决了传统LDR渲染范围有限的缺陷,能更真实地表现亮度对比(100,000:1)。文章详…

在jupyter notebook中使用自己创建的conda虚拟环境的Python内核

前情提要: 安装完Anaconda后,已经自带了jupyter notebook,随后我们创造自己的虚拟环境X(conda默认是base环境),但目前在jupyter notebook中无法选择虚拟环境X中的内核。我们需要把我们的虚拟环境加入到Jupyter中…

Flutter顶部状态栏显示,安全区设置等,防止各种异性屏挡住应用操作栏

经过测试,用下方文章的第4中方法可以实现 原文地址:Flutter 状态栏完美攻略,不要找了,都在这里了 - 简书本篇文章的前提是使用Scaffold和AppBar组件。 1. 沉浸式状态栏Scaffold(extendBodyBehindAppBar: true,appBar…

实用指南:JavaWeb-Ajax、监听器、过滤器及对应案例和jstl补充

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

LGP11189 [KDOI R10] 水杯降温 学习笔记

LGP11189 [KDOI R10] 水杯降温 学习笔记 \(\texttt{Luogu Link}\) 前言 不拖啦。 题意简述 有一棵 \(n\) 个结点的树,以 \(1\) 为根。每个结点 \(u\) 有权值(水杯),初始为 \(a_u\)。 你有两种操作,可进行任意次:…

electron+vue——区分窗口普通关闭和强制退出 - 前端

preload.js:import { contextBridge, ipcRenderer } from "electron";contextBridge.exposeInMainWorld("desktopHandler", {onWindowClose: (callback) => ipcRenderer.on("window-clos…

notepad++中使用正则表达式过滤数据

示例: 姓名: 王五邮箱: wangwu@example.com姓名: 张三电话: 138-1234-5678姓名: 李四电话: 13987654321电话: 13987654123姓名: 王五邮箱: wangwu@example.com过滤包含姓名下面是电话的段落: ^姓名:((?!^姓名).)*?…

从孔子到马斯克:理解原理与问对问题的智慧史

懂原理的人,能看清方向;会提问的人,能突破迷雾。一、从“知其理”开始:理解让人清晰 我们做事时,常会感到困惑:为什么别人总能更快找到关键点、制定计划,而自己容易陷入混乱? 其实,差别往往不在“努力程度”,…

startPage()分页总数问题

问题: 若依系统分页工具返回列表转换后导致的分页total跟随pageSize变化 例如,数据库查询total是11,pageSize=1则返回total是1 解决方案@GetMapping("/list")public TableDataInfo list(User user) {star…

2025 年电感源头厂家最新推荐排行榜:聚焦功率一体成型屏蔽共模等系列,助力企业精准选优质制造商屏蔽/共模/贴片共模/磁环/磁胶SWPA电感厂家推荐

当前电子产业飞速发展,电感作为核心被动元件,其品质直接决定终端产品的稳定性与可靠性。但电感市场厂家数量繁杂,产品质量、技术实力、供货能力差异显著,下游企业在选购时常陷入困境 —— 难以判断厂家技术积累深浅…

2025 年风机厂家最新推荐排行榜:聚焦交流 / 直流 / 无刷 / 大吸力 / 调速 / 小型高压等多类型风机,精选优质企业助力采购决策

当前风机行业技术迭代加速,市场需求不断升级,各类风机产品层出不穷,但质量参差不齐,企业采购时常常面临 “选择难” 的困境。一方面,传统风机在能耗、噪音、调速灵活性等方面存在不足,难以满足印刷设备、医疗器械…

简单高效的SQL注入测试方法:Break Repair技术详解

本文详细介绍了SQL注入测试的简单有效方法,重点讲解了Break & Repair技术原理,包含数据库类型识别、盲注测试技巧和信息提取方法,适合网络安全初学者和渗透测试人员学习参考。Break & Repair:我是如何以最…

蒙古文识别技术:采用深度学习模型(CNN+RNN)处理蒙古文竖写特性,实现高精度识别 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …