对RocketMQ的初步理解

rocketMq、相关消息队列概念理解整理 为什么要用消息队列? 我理解:首先,消息队列一般都是在微服务、分布式的部署方式下使用的。业务系统之间的消息需要传递,通过消息中间件更加友好。 Java内部有队列了,为什么要要用MQ? 我的理解:Java内部的队列,当不同的应用的消息进行对接时。需要修改源码。 但是当我们使用消息中间件 解说: JDK中是简单的内存队列 原因: 系统之间实现代码解耦。 限流。消息放在消息队列中,系统有能力去取的时候再进行处理。 消息队列一般不能是单机的 消息队列中的消息,一般要对接多个系统,消息很重要,都是得集群/分布式的。提 阅读详情

关于对rocketMQ初步学习,我有了一些简单的总结和个人感悟,希望能帮到您。
1、首先,需要了解什么是MQ,即它就是一个消息队列。就是一个消息传递的中间件。
2、MQ作为一个中间件,存在就有必要。即它的作用有三个:①限流削峰,代表是“双十一大购物”活动,将获取到的“很大的”订单信息保存在MQ中,不至于造成处理“拥挤”的现象,即暂存超量的作用。②异步解耦,代表是A系统对B系统的消息传输的时候,如果B系统出现问题,则整个系统将会“瘫痪”,但是在中间加一个MQ,则将同步传输调用变为异步传输调用,大大地保证了整个系统的安全性和提高了整个系统的可维护性。③数据收集和分发,代表就是手机的信息分发。
3、怎么在本地去配置一个RocketMQ
(1) 先下载两个文件(RocketMQ是apache下的项目)
路径:

路径:https://rocketmq.apache.org/release_notes/release-notes-4.9.2/

图示的两个压缩文件,需要解压
截至2021年11月25日,其最新版本是4.9.2
(2) 解压完成之后就是对电脑环境变量的配置
变量名:ROCKETMQ_HOME
变量值:F:\rocketmq-all-4.9.2-bin-release\rocketmq-4.9.2(解压路径)
环境变量
(3) 在bin目录写运行cmd命令,或直接cd进到bin目录下
在这里插入图片描述
***

要启动RocketMQ,必须先启动Name Server,不要关闭窗口,继续启动Broker。


(4) 先启动运行 mqnamesrv.cmd
start mqnamesrv

出现运行成功显示:在这里插入图片描述
如果出现提示VM不够用,后边会有补充说明。
(5) 不要关闭这个窗口,继续启动mqbroker.cmd

start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true

运行成功显示:
在这里插入图片描述
4、 问题说明
(1)RocketMQ NAMESERVER默认分配的jvm参数需要占用较大内存,一般pc没有这么大内存,需要修改小一些
修改的两个文件是
在这里插入图片描述
在runserver.cmd中,将2g改为512m即可。

set "JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
@echo off
rem Licensed to the Apache Software Foundation (ASF) under one or more
rem contributor license agreements.  See the NOTICE file distributed with
rem this work for additional information regarding copyright ownership.
rem The ASF licenses this file to You under the Apache License, Version 2.0
rem (the "License"); you may not use this file except in compliance with
rem the License.  You may obtain a copy of the License at
rem
rem     http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.


if not exist "%JAVA_HOME%\bin\java.exe" echo Please set the JAVA_HOME variable in your environment, We need java(x64)! & EXIT /B 1
set "JAVA=%JAVA_HOME%\bin\java.exe"

setlocal

set BASE_DIR=%~dp0
set BASE_DIR=%BASE_DIR:~0,-1%
for %%d in (%BASE_DIR%) do set BASE_DIR=%%~dpd

set CLASSPATH=.;%BASE_DIR%conf;%CLASSPATH%

set "JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
set "JAVA_OPT=%JAVA_OPT% -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC"
set "JAVA_OPT=%JAVA_OPT% -verbose:gc -Xloggc:"%USERPROFILE%\rmq_srv_gc.log" -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
set "JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow"
set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages"
set "JAVA_OPT=%JAVA_OPT% -Djava.ext.dirs=%BASE_DIR%lib;%JAVA_HOME%\jre\lib\ext"
set "JAVA_OPT=%JAVA_OPT% -cp "%CLASSPATH%""

"%JAVA%" %JAVA_OPT% %*

在runbroker.cmd中,直接删除15g的那一行就可以正常运行。

@echo off
rem Licensed to the Apache Software Foundation (ASF) under one or more
rem contributor license agreements.  See the NOTICE file distributed with
rem this work for additional information regarding copyright ownership.
rem The ASF licenses this file to You under the Apache License, Version 2.0
rem (the "License"); you may not use this file except in compliance with
rem the License.  You may obtain a copy of the License at
rem
rem     http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.

if not exist "%JAVA_HOME%\bin\java.exe" echo Please set the JAVA_HOME variable in your environment, We need java(x64)! & EXIT /B 1
set "JAVA=%JAVA_HOME%\bin\java.exe"

setlocal

set BASE_DIR=%~dp0
set BASE_DIR=%BASE_DIR:~0,-1%
for %%d in (%BASE_DIR%) do set BASE_DIR=%%~dpd

set CLASSPATH=.;%BASE_DIR%conf;%CLASSPATH%

rem ===========================================================================================
rem  JVM Configuration
rem ===========================================================================================
set "JAVA_OPT=%JAVA_OPT% -server -Xms512m -Xmx512m"
set "JAVA_OPT=%JAVA_OPT% -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:SurvivorRatio=8"
set "JAVA_OPT=%JAVA_OPT% -verbose:gc -Xloggc:%USERPROFILE%\mq_gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCApplicationStoppedTime -XX:+PrintAdaptiveSizePolicy"
set "JAVA_OPT=%JAVA_OPT% -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
set "JAVA_OPT=%JAVA_OPT% -XX:-OmitStackTraceInFastThrow"
set "JAVA_OPT=%JAVA_OPT% -XX:+AlwaysPreTouch"
set "JAVA_OPT=%JAVA_OPT% -XX:-UseLargePages -XX:-UseBiasedLocking"
set "JAVA_OPT=%JAVA_OPT% -Djava.ext.dirs=%BASE_DIR%lib;%JAVA_HOME%\jre\lib\ext"
set "JAVA_OPT=%JAVA_OPT% -cp %CLASSPATH%"

"%JAVA%" %JAVA_OPT% %*

6、关闭MQ

mqshutdown namesrv
mqshutdown broker

在这里插入图片描述
小小的分享就到这里,欢迎指教探讨和留言哦

深入理解RocketMQ底层是如何玩 将内核态的一段空间地址映射到了用户态中,这样数据只需要写入到用户态的这段虚拟地址中,接着内核空间的DMA会将这段数据写入到磁盘中。我们知道,在操作系统的中,数据通常都是被放在磁盘中的,只有在需要计算的时候,才会将数据加载到内存中,而每次加载的单位都是以“页”作为基础,假设我们需要访问一块存在于磁盘,但是没有被加载到内存中的数据,这种情况,我们称之为。首先,将用户地址空间的数据通过CPU拷贝,放入到内核空间中,并且写入一个PageCache里面,然后通过DMA去将PageCache的数据写入到磁盘。 阅读详情

相关推荐

RocketMQ- 深入理解RocketMQ的消息模型

在消息需要重试时,会先移动到对应的重试Topic中。这样,这些重试的消息有了自己单独的队列,就不会影响到Topic下的其他消息了。由于RocketMQ与消费者端有失败重试机制,所以,只要消息成功发送到RocketMQ了,那么可以认为Branch2.1,Branch2.2,Branch2.3这几个分支步骤,是可以保证最终的数据一致性的。但是,这里还是会造成一种分裂,消息最终是由Consumer来处理,但是消息却是由Broker推送过来的,也就是说,Consumer无法确定自己将要处理的是哪些消息。

weixin_43874650的博客 1548

RocketMq详解:一、RocketMQ 介绍及基本概念

RocketMQ 是阿里巴巴开源的分布式消息中间件,现已成为 Apache 软件基金会的顶级项目。支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。它里面有几个区别于标准消息中件间的概念,如Group、Topic、Queue等。系统组成则由Producer、Consumer、Broker、NameServer等组件组成。

zhiyikeji的博客 2万+

【RocketMQ】从 文件/数据结构 视角理解RocketMQ原理

一文总结RocketMQ各个模块之间的底层文件和数据结构,附带一丢丢原理的浅层解析

weixin_41059155的博客 929

消息队列 RocketMQ原理和使用整理

背景 由于公司之前使用的队列中间件是kafka,近期变更为使用阿里的RocketMQ,所以对RocketMQ进行一下简单的知识整理。后续研究其内部原理后,再来一篇深入理解。 说明 消息队列 RocketMQ 版是阿里云基于 Apache RocketMQ 构建的低延迟、高并发、高可用、高可靠的分布式消息中间件。消息队列 RocketMQ 版既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具...

.... 永远年轻,永远热泪盈眶 4180

RocketMQ的理解与使用

看完此文章,你基本可以理解RocketMQ并进行项目使用了。那里有不足,欢迎评论指正。 1. MQ基本介绍 MQ好处: 1.应用解耦 2.流量削锋: 请求流量瞬间猛增,可能会把系统压垮。MQ可以将请求缓存起来,分散到很长一段时间去处理。提高系统的稳定性。 3.数据分发 缺点: 1.MQ宕机了,对业务造成影响 2.消息重复消费问题,消息丢失问题,消息的顺序性问题 3.数据一致性问题 2. RocketMQ基本介绍 RocketMQ是由阿里捐赠给Apache的一款分布式、队列模型的开源消息..

qq_38289091的博客 786

Design Compiler时序约束实战:如何用set_clock_uncertainty解决时钟抖动问题?

本文深入探讨了在Design Compiler时序约束实战中,如何精准运用set_clock_uncertainty命令解决时钟抖动等非理想性问题。文章详细解析了该命令在时钟树综合前后的不同应用策略、建立时间与保持时间的差异化设置,并对比了其与set_clock_jitter的适用场景,旨在帮助数字IC设计工程师制定稳健的时序约束,为后端物理实现预留合理的安全裕量,从而高效达成时序收敛。

weixin_29196891的博客 299

Rocketmq安装与环境配置、demo代码

1、下载Rocketmq rocket文件下载地址https://rocketmq.apache.org/release_notes/release-notes-4.4.0/ 解压之后存放在自己的盘符 2、环境变量配置 新建系统变量: 变量名: ROCKETMQ_HOME 变量值: *:、tools\rocketmq-all-4.4.0-bin-release (解压后的 RocketMq 路径) 3、启动mq相关服务 3.1启动namesrv服务 start mqname...

tanqingfu1的博客 3712

攀藤PMS系列传感器STM32驱动开发与数据解析实战

本文详细介绍了攀藤PMS系列传感器与STM32微控制器的驱动开发与数据解析实战,涵盖硬件连接、数据协议解析、驱动源码编写及数据处理优化。重点解析了传感器数据帧结构,提供了完整的STM32驱动实现代码,并分享了实际应用中的问题排查与性能优化经验,帮助开发者快速实现高精度颗粒物浓度检测。

milk8的博客 348

浅谈rocketMQ

一、了解rocketMQ之前首先得知道什么是消息队列? 消息队列即是信息的容器,充当中间媒介作用。通俗的来说就是系统A生产消息存放至容器中,然后通过系统B访问这个容器来读取数据,因此这个容器充当的作用即是消息队列 二、消息队列的好处 最主要也是最明显的好处:异步、解耦、削峰 异步 1.通过MQ这一中间件完美的把消息生产者跟消费者区分开,也就是说生产者将消息放入MQ中不需要关系消费者何时来读取数...

HenryXiao的博客 2626

13.5元低成本模拟乘法器AD633JN实测:手把手教你避开那些坑

本文以13.5元低成本模拟乘法器AD633JN为核心,通过实测搭建混沌电路的全过程,手把手教你避开电源灌流、芯片发烫、输入偏置等常见陷阱。文章详细剖析了AD633JN的比例因子、输入阻抗等关键特性,并提供了正确的电源去耦、信号耦合及稳定性布线方案,旨在帮助硬件爱好者与工程师高效利用这款高性价比芯片,节省调试时间与成本。

weixin_28432777的博客 519

Mac Studio M5 Ultra本地部署大模型实战:从内存原理到Ollama开发工作流

大模型推理的性能瓶颈往往不在算力,而在于内存能否装下整个模型、带宽能否持续供得上。Transformer架构每生成一个token都需要把权重完整扫一遍,决定了这本质上是内存密集型任务——统一内存架构因此成为本地部署的关键通路,超大容量与高带宽并行,让“装得下”和“跑得快”同时成立。模型量化技术(如Q4_K_M)则是另一项决定性软件策略,用轻微精度损失换取更低的硬件门槛,也是Ollama本地部署从7B到70B各类模型必做的前置功课。当本地推理服务跑起来后,借助VS Code等开发工具的OpenAI兼容API接

weixin_29043895的博客 448

对RocketMQ初步理解

主题模:在主题模型中,消息的生产者称为发布者,消息的消费者称为订阅者,存放消息的容器称为主题。 生产者组: 代表某一类的生产者,比如我们有多个秒杀系统作为生产者,这多个合在一起就是一个生产者组,它们一般生产相同的消息。 消费者组: 代表某一类的消费者,比如我们有多个短信系统作为消费者,这多个合在一起就是一个 消费者组,它们一般消费相同的消息。 主题: 代表一类消息,比如订单消息,物流消息等等。 主题中存在多个队列,生产者每次生产消息之后是指定主题中的某个队列发送消息的。集群消费模式下,一个消费者集群

dsaggdsd的博客 303

STM32驱动MG996R舵机的PWM控制与闭环原理

舵机是一种典型的模拟闭环伺服系统,其核心是通过电位器反馈实现角度位置的自动校正。工作原理基于负反馈控制:目标PWM脉宽决定期望角度,电位器输出实时反馈实际角度,控制电路计算偏差并驱动电机消除误差。该机制赋予舵机强带载能力与抗干扰性,是机器人、云台、智能执行器等场景的关键执行单元。在嵌入式开发中,STM32通过定时器生成标准20ms周期、0.5–2.5ms脉宽的PWM信号,需严格遵循电气规范,并解决PA15引脚SWJ复用冲突、定时器重映射及CCR精度计算等关键问题。本文深入解析MG996R舵机控制全流程,涵盖

weixin_42600407的博客 562

rocketmq初理解(草稿)

广播模式:并发执行,组内任一消费者消费;一个人发消息 所有人都能收到 ,比如一共十条数据 广播 就是十个人 订阅 每个人都是十条数据。集群模式:一个人发消息 有多少个人采用集群模式 就会有多少人 轮训这些消息,比如一共十条数据 十个人订阅 每个人只能分到一条数据。以上内容进攻学习参考!

weixin_60948956的博客 348

【GameFramework框架】7-2、GameFramework框架是否“过度设计”?

框架是否过度设计,这个问题其实我被问到很多次了。不仅仅是新手刚接触就觉得“过度设计”的评价,有些熟练的开发者也会有这种感觉。那么,这篇文章就来探究一下,为什么框架会让人感觉“过度设计”,以及框架如何设计,还有,如何让框架适应自己的节奏。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2118

YOLO11改进-注意力-引入级联组注意力机制(Cascaded Group Attention, CGA)

输入特征拆分:输入特征进入 CGA 模块后,被均匀拆分为个部分,每个部分作为一个注意力头的输入,这样每个头关注输入特征的不同部分,实现特征的并行处理,同时为提高注意力多样性奠定基础。注意力头计算单元:每个注意力头包含三个线性投影层、、用于将输入特征映射到不同子空间,以及计算自注意力的单元。在计算过程中,通过注意力头之间的级联操作,前一个头的输出会累加到下一个头的输入上,实现特征的逐步细化。

qq_64693987的博客 2489

RocketMQ吐血总结

RocketMQ吐血总结 架构   概念模型 最基本的概念模型与扩展后段概念模型  存储模型   RocketMQ吐血总结 User Guide RocketMQ是一款分布式消息中间件,最初是由阿里巴巴消息中间件团队研发并大规模应用于生产系统,满足线上海量消息堆积的需求, 在2016年底捐赠给Apache开源基金会成为孵化项目,经过不到一年时间正式成为了A...

武汉红喜 15万+

基于NAS的OpenClaw部署方案:家庭服务器架构设计

本文提出了一种基于NAS的家庭服务器架构方案,用于部署OpenClaw AI系统。文章分析了NAS作为部署平台的六大优势:集中化数据管理、大容量存储、多用户并发访问、7×24小时稳定运行、低功耗设计以及丰富的扩展能力。针对不同用户需求,详细对比了主流NAS型号(如Synology DS923+、QNAP TS-870等)和DIY方案的硬件配置,并给出了最低/推荐配置标准。在部署方案部分,重点介绍了Synology DSM和TrueNAS两种系统的初始化步骤,以及通过Docker容器安装Python、Redi

博客 2509

RocketMQ 总体概括

RocketMQ 领域模型、应用场景及解决的问题、常见 MQ 总结及如何选择。

流月up的博客 1193

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

rocketMQ的初步认识,topic、nameServer、broker相关概念的解释

针对我学过kafka,然后半年过去了,基本什么概念都没,kafka的任何知识都忘了的学习状况,决定多多记录自己在学习新知识的各种见解,即使几个月以后回首望去,感觉这些知识太基础了也在所不惜。绝对不能重蹈kafka的覆辙。 在rocketMQ中,有topic、nameServer、broker三个最基本概念: 我眼里的三大最基础概念: 1、topic: 主题。每一个消息都会且只会属于某一个主题。消息和主题是属于一对一的关系,而主题和消息是属于一对多的关系。如下图,可以看到主题和消息的关系: 如上图,生产.

yuanchangliang的博客 1万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Windows下安装RocketMQ

这里并不打算深入讲解RocketMQ的架构和特性,因为我觉得,针对于初学者,太早地深入知识细节,会让人感到迷惘,学习起来吃力。namesrvAddrs地址就是服务的地址,192.168.10.100是我虚拟主机的ip,如果是window环境下,改成localhost。两个部分,因此,用作本机开发调试用的最小应用,应该分别启动一个NameServer和一个Broker节点。以上的知识都来源于RocketMQ官网的参考文档,需要更多细节的同学, 可以打开。为文件名后缀,linux环境的脚本以。

GSON的博客 1680

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

RocketMQ的运行架构&理解RocketMQ的消息模型

通过之前的一系列实验,相信你对RocketMQ的运行机制有了一个大概的了解。接下来我们结合一下之前实验的过程,来理解一下RocketMQ的运行架构。下图是RocketMQ运行时的整体架构:

· 813

RocketMQ ACL使用指南

详细介绍RocketMQ acl访问控制列表的流程图、plain_acl.yml文件各配置项的详细介绍、权限匹配验证流程与acl使用示例。

中间件兴趣圈 2万+

RocketMq的理解和记录

ActiveMQ: 消费消息的异步操作的代码逻辑图示和讲解 临时节点创建两端会话的情况 遇到的问题 rocketMq 事务消息: rocketMq中使用消息事物的流程 RocketMQ角色 broker broker集群 producer consumer namespace 对比JMS中的Topic和Queue 发送方式 批量发送消息 消费消息模式 集群消息 广播消息 RocketMq源码一级高级Api Offset minOffset maxOffset consumerOffset diffTotal

flower_boboji的博客 1966

深入理解RocketMQ中的NameServer

本文来说下RocketMQ中的NameServer 文章目录概述 概述

wh柒八九的博客 6525

(一)RocketMQ初步认知

RocketMQ初步认识,包括基本术语解释,简单架构解读,工作流程描述

山顶雨人 1444
下一篇: 在RocketMQ中的踩过的那些“坑”
ScannerLT
博客等级 码龄7年 4粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值