RocketMQ快速入门_2. rocketmq 的应用场景、与其他mq的差异
0. 引言
之前我们讲解过rabbitMQ,本期我们将进入吞吐量更加强大的rocketMQ的学习。
1. 基础概念
如果你是刚接触MQ的同学,还不清楚消息队列的基础概念的,可以参考我之前这篇文章:
https://wu55555.blog.csdn.net/article/details/124678795
2. rocketMQ的应用场景
我们在之前的文章中已经引入了MQ的三种场景:异步调用、流量削峰、服务解耦
而除了这几个作用外,rocketmq支持的几大特性还可以处理以下几种业务场景:
- 顺序消费
所谓顺序消费,就是希望触发的事件按照触发的顺序依次执行,而不要产生混乱。这里大家可能有疑惑,我们正常执行代码不就是顺序消费的吗? 为什么要单独说明,当然是因为执行的事件非常多,我们需要借助MQ缓冲大量消息的特性作为前提,然后又要保证消息是顺序消费执行的,这样才能保证我们后续的业务不会产生混乱。而这一场景就可以依赖rocketmq完成,后续我们会详细讲解实现步骤。
- 分布式事务
熟悉mysql的同学应该清楚事务执行,但分布式事务的操作,一可以依赖一些分布式组件,如seata来实现,但某些场景下,比如还是上述说的,我们有大量事件堆积的情况下,需要MQ来缓冲,而我们有需要满足事务,这种所谓的事务是指什么呢? 就是在这条消息消费并执行完后续的处理事件之前,如果发生了报错,可以让这条消息的消费回退,下次可以再次消费,以此称为分布式事务消息,这类场景也不少见,而rocketmq独有的事务消息可以很好的帮助我们解决该问题。
- 延迟操作
延迟操作在很多业务中都有需求,比如最常见的30分钟未支付自动关闭订单,定时重发等等,这一类的需求就需要MQ支持延迟消息的特性,而rocketmq的延迟消息虽然不如rabbitmq那样支持自定义的延迟时间,但是预设的16级延迟时间档位也足够我们应付绝大部分业务场景
- 定时消息
定时消息实际上是延迟消息的一种变种,可以用定时任务完成,如定时推送订阅消息等,也可以借助延迟消息的特性来完成此类场景
3. rocketMQ与其他MQ的差异
3.1 主要差异
首先引入advanced-java项目中对比的几款常用MQ
其中activeMQ实际已经很少使用,逐渐在退出研发者的视野。重点分析下rabbitMQ、rocektMQ、kafka的差异
rabbitmq相对出现的周期更长,功能性上更加完善,支持很多的拓展插件,如果你的项目对于吞吐量没有那么高的要求,只是需要个万级的MQ来做一些解耦、缓冲等,那么推荐rabbitmq。
但如果考虑后续要增加业务量,或者有不和预期的流量激增,那么更加推荐rocketmq,且因为是阿里开源的,文档性上相对更加友好,代码习惯更加符合国人习惯。但在大批量数据下可能有丢数据的风险,需要经过细致的调优。
kafka主要出现在大数据行业场景,同时像ELK之类的海量日志数据处理也会出现kafka的应用之地,同样有丢消息的诟病,优点是比rocketmq支持更加庞大的吞吐量。
3.2 架构差异
我们之前一起学习过rabbitmq,大家会了解到其中有路由的概念,相对来说rabbitmq的架构是有交换机来做一层分发的
而在rocketmq中就没有交换机的分发了,通过topic来划分不同的队列,消费者通过订阅topic来接收消息,同时消费者、生产者都可以区分不同的群组
相对kafka的架构就更加复杂,通过zookeeper来管理集群,采用broker服务存储消息,与rocketmq相同的是,也有主题topic的概念,消费者也通过订阅主题来接收相关的消息。不同的是kafka中有分区partition,一个topic会被切分为多个分割成多个较小的、有序的数据单元,每个数据单元就是一个partition。相对来说提高了kafka的并发能力,并且会创建分区副本存储到不同的broker上,以此提高可用性。
4. 总结
从上文可以看到rocketmq中实际上是有namesrv , broker两个组件的,除此之外rocketmq还有一个管理端,而这三个组件之前的关系是什么,如何协同合作的? 我们将在下一节讲解。
相关文章:

RocketMQ快速入门_2. rocketmq 的应用场景、与其他mq的差异
0. 引言 之前我们讲解过rabbitMQ,本期我们将进入吞吐量更加强大的rocketMQ的学习。 1. 基础概念 如果你是刚接触MQ的同学,还不清楚消息队列的基础概念的,可以参考我之前这篇文章: https://wu55555.blog.csdn.net/article/deta…...

【Azure 架构师学习笔记】- Azure Private Endpoint
本文属于【Azure 架构师学习笔记】系列。 前言 公有云的其中一个特点是默认允许公网访问, 这就对企业环境带来风险,也是很多年前企业对公有云抵触的其中一个原因,现在这类问题已经很少,因为有了很多技术来确保云上的资源被安全地…...

开发知识点-Python-爬虫
爬虫 scrapybeautifulsoupfind_all find祖先/父节点兄弟节点nextpreviousCSS选择器属性值 attrsselect 后 class 正则使用字符串来描述、匹配一系列符合某个规则的字符串组成元字符使用grep匹配正则组与捕获断言与标记条件匹配正则表达式的标志 特定中文 匹配 scrapy scrapy内…...

如何修复eutil.dll文件,eutil.dll下载安装教程
在我们使用计算机的时候,偶尔会遭遇一些技术问题,其中一个比较常见的问题就是出现了"丢失eutil.dll文件"的提示。当我们的电脑告诉我们缺少了eutil.dll文件时,常常是因为某些程序无法找到这个文件而导致了程序的运行异常。那我们应…...

虾皮、lazada店铺运营攻略,如何搭建高效、稳定的自养号测评系统
随着电子商务的蓬勃发展,越来越多的人选择在虾皮这样的电商平台上开设店铺,以实现创业梦想。但如何在众多店铺中脱颖而出,成为消费者的首选?本文将为您详细解答“怎么样做好虾皮店铺”,并提供一些实用的运营建议。 一、怎么样做…...

《TCP/IP详解 卷一》第13章 TCP连接管理
目录 13.1 引言 13.2 TCP连接的建立与终止 13.2.1 TCP半关闭 13.2.2 同时打开与关闭 13.2.3 初始序列号 13.2.4 例子 13.2.5 连接建立超时 13.2.6 连接与转换器 13.3 TCP 选项 13.3.1 最大段大小选项 13.3.2 选择确认选项 13.3.3 窗口缩放选项 13.3.4 时间戳选项与…...

许多人可能还不了解这个信息差:美赛的第一批 EI 已经录用,不用再犹豫啦
格局打开,美赛论文转学术论文发表 🚀🚀 各位同学,美赛已经结束了一段时间,你们是否还在焦急地等待最终成绩的公布?一些有远见的同学已经提前收到了一份喜讯:他们的美赛论文已被转化为学术论文并…...

DFS回溯-经典全排列问题(力扣)
前言 对于全排列问题,常用的做法是设置一个vis数组来确定位置i上的数字是否被访问,因为是全排列问题,所以不同的顺序也是不一样的排列,因此每次都是从起点开始询问**(注意起点到底是0还是1)** 46全排列(最简单的模板) class So…...

如何在Windows上使用Docker,搭建一款实用的个人IT工具箱It- Tools
文章目录 1. 使用Docker本地部署it-tools2. 本地访问it-tools3. 安装cpolar内网穿透4. 固定it-tools公网地址 本篇文章将介绍如何在Windows上使用Docker本地部署IT- Tools,并且同样可以结合cpolar实现公网访问。 在前一篇文章中我们讲解了如何在Linux中使用Docker搭…...
Linux运维_Bash脚本_编译安装ncurses-5.6
Linux运维_Bash脚本_编译安装ncurses-5.6 Bash (Bourne Again Shell) 是一个解释器,负责处理 Unix 系统命令行上的命令。它是由 Brian Fox 编写的免费软件,并于 1989 年发布的免费软件,作为 Sh (Bourne Shell) 的替代品。 您可以在 Linux 和…...
pip install和conda install的区别
先说结果:日常对于python的学习和简单项目推荐使用pip安装,效率更高,也不会有很多依赖问题。 首先,无论是conda还是pip,它们都属于包管理工具,直白点来说就是用来下载东西的。 二者的区别主要有以下几点&…...
实现video视频缓存
方法一 要实现视频被播放过后本地有缓存,下次播放无需网络即可播放,你可以利用浏览器的本地存储功能(如localStorage或IndexedDB)来实现。 你可以在视频播放结束时,将视频的URL以及相关信息存储在本地存储中。然后&a…...

Jmeter事务控制器实战
在性能测试工作中,我们往往只测试业务功能相关主要接口的数据请求和返回。然而实际上用户在使用web应用时,可能会加载诸多资源:htmldom、cssdom、javaScript、ajax请求、图片等。 从打开一个页面到界面渲染完成需要一定的加载时间࿰…...

S4---FPGA-K7板级原理图硬件实战
视频链接 FPGA-K7板级系统硬件实战01_哔哩哔哩_bilibili FPGA-K7板级原理图硬件实战 基于XC7K325TFFG900的FPGA硬件实战框图 基于XILINX 的KINTEX-7 芯片XC7K325FPGA的硬件平台,FPGA 开发板挂载了4 片512MB 的高速DDR3 SDRAM 芯片,另外板上带有一个SODIM…...
某些微信浏览器(比如小米手机mix2 8.0,Android 6:ZTE 7 max)input标签file属性,无法选中图片或者调用相机
1.初始化wxConfig (appId,timestamp,nonceStr,signatur,jsApiList) window.localStorage.setItem(currentUrl, window.location.href); 2.wx.checkJsApi({jsApiList: [chooseImage] // 需要检测的JS接口列表success: function(res) {// 以键值对的形式返回,可用的ap…...
python网络爬虫技术-mysql-5.6.39 安装
一、下载安装文件 到 MySQL官网 下载 mysql-5.6.39 压缩包链接:链接:https://pan.baidu.com/s/14e05FMhcWE8bvvStwyevNQ 提取码:1234 参考安装教程...

Projection head与使用例子
概念介绍 在深度学习中,Projection head是一种用于提取特征或表征的网络结构。它通常是一个或多个全连接层,将输入的高维特征映射到一个低维的向量空间,以便于进行后续的任务,如对比学习、聚类、分类等。 Projection head的使用…...

2024年新版CMS内容管理使用,不用回退老版本 使用最新小程序云开发cms内容模型
一,问题描述 最近越来越多的同学找石头哥,说cms用不了,其实是小程序官方最近又搞大动作了,偷偷的升级的云开发cms(内容管理)以下都称cms,不升级不要紧,这一升级,就导致我…...
MySql--死锁
一、什么是mysql死锁? MySQL中的死锁是指多个事务同时请求对同一资源进行操作(读或写),并且由于资源被互斥地锁定,导致彼此无法继续进行。当发生死锁时,MySQL会自动选择其中一个事务作为死锁的牺牲者,回滚该事务,并释放锁定的资源,从而解除死锁。 以下是一些处理MyS…...

【自然语言处理六-最重要的模型-transformer-上】
自然语言处理六-最重要的模型-transformer-上 什么是transformer模型transformer 模型在自然语言处理领域的应用transformer 架构encoderinput处理部分(词嵌入和postional encoding)attention部分addNorm Feedforward & add && NormFeedforw…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...