MQ, RocketMQ, 安装

文章说明

本文主要说明RocketMQ的几种常见的安装方式。之前在工作中也用过RocketMQ,但是一直用的是测试环境上的,也没有自己动手安装过。这次专门抽了时间学习了一下。

文章目录

    • 文章说明
    • 参考文献
    • 安装
      • windows安装
        • 环境要求
        • 下载
        • 配置环境变量
        • 启动
        • 注意事项
      • Linux安装
        • 环境要求
        • 启动
        • 注意事项
      • 源码安装与调试
        • 下载
        • 环境要求
        • IntelliJ IDEA导入
        • 启动RocketMQ源码
          • 启动NameServer
          • 启动Broker

参考文献

本文内容主要来源于马士兵李瑾老师的视频教程(RocketMQ基础实战版),结合了老师的笔记以及根据自己的实践做了一些修改。

安装

windows安装

环境要求

已安装JDK1.8+(64位)

下载

下载链接:https://archive.apache.org/dist/rocketmq/ ,本文下载的是4.9.7

解压运行版本(Binary),确保已经安装好了JDK1.8

解压后的目录如下:
在这里插入图片描述

配置环境变量

变量名:ROCKETMQ_HOME

变量值:MQ解压路径\MQ文件夹名
在这里插入图片描述

启动

在RocketMQ的架构中,都是需要先启动NameServer再启动Broker的。所以先启动NameServer。

启动NameServer

使用cmd命令框执行进入至‘MQ文件夹\bin’下,然后执行‘start mqnamesrv.cmd’,启动NameServer。成功后会弹出提示框,此框勿关闭。
在这里插入图片描述
启动Broker

使用cmd命令框执行进入至‘MQ文件夹\bin’下,然后执行‘start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true’,启动Broker。成功后会弹出提示框,此框勿关闭。
在这里插入图片描述

注意事项

内存不足的处理方式

RocketMQ默认的虚拟机内存较大,启动Broker如果因为内存不足失败,需要编辑如下两个配置文件,修改JVM内存大小。

编辑‘MQ文件夹\bin’下的runbroker.cmd和runserver. cmd修改默认JVM大小(Linux上对应同名sh文件)

runbroker.cmd --broker的配置

runserver. cmd --nameServer的配置

例如:配置以下参数将RocketMQ的启动JVM的 堆空间内存控制在512m,新生代控制 在256m。元空间初始128m,最大320m。
在这里插入图片描述
修改RocketMQ的存储路径

rocketmq取的默认路径是user.home路径,也就是用户的根目录,一般存储放在跟路径下的 /store目录。
在这里插入图片描述
源码中可以得到验证,如下图:
在这里插入图片描述
所以这里会有一个问题,RocketMQ很容易导致C盘空间不够,在使用过程中,创建一个主题默认就是要创建1G的文件,很可能会导致出问题。

所以在windows上容易导致C盘空间吃满。

解决方式有两种:

1、修改源码,比如:全局替换user.home参数为mq.store,然后重新打包

2、使用源码方式启动,源码启动时通过参数设置指定存储位置

Linux安装

环境要求

64bit Linux、64bit JDK 1.8+、4g+磁盘空间,以及3G以上内存。
本文是在Vmware虚拟机的CentOS7.9中安装的。在虚拟机中安装CentOS的步骤请自行百度。
配置地址时,使用的是主机名而不是IP,请在hosts文件中配置好。

启动

在RocketMQ的架构中,都是需要先启动NameServer再启动Broker的。所以先启动NameServer。

  • 启动NameServer

进入至‘MQ文件夹\bin’下,然后执行‘nohup sh mqnamesrv &’,启动NAMESERVER。

查看日志的命令:tail -f ~/logs/rocketmqlogs/namesrv.log
在这里插入图片描述

  • 启动Broker

进入至‘MQ文件夹\bin’下,启动BROKER。

首次启动需要修改配置文件,增加外部访问地址,例如:conf/broker.conf

brokerIP1=dev-study

启动命令如下:

nohup sh mqbroker -c …/conf/broker.conf -n dev-study:9876 autoCreateTopicEnable=true &

这样启动的服务器客户端可以自动创建主题。

查看日志的命令:tail -100f ~/logs/rocketmqlogs/broker.log

2023-07-20 23:05:07 INFO main - Try to start service thread:FlushRealTimeService started:false lastThread:null
2023-07-20 23:05:07 INFO main - Try to start service thread:FlushDiskWatcher started:false lastThread:null
2023-07-20 23:05:07 INFO main - Try to start service thread:StoreStatsService started:false lastThread:null
2023-07-20 23:05:07 INFO main - Try to start service thread:FileWatchService started:false lastThread:null
2023-07-20 23:05:07 INFO FileWatchService - FileWatchService service started
2023-07-20 23:05:07 INFO main - Try to start service thread:PullRequestHoldService started:false lastThread:null
2023-07-20 23:05:07 INFO PullRequestHoldService - PullRequestHoldService service started
2023-07-20 23:05:07 INFO main - Try to start service thread:TransactionalMessageCheckService started:false lastThread:null
2023-07-20 23:05:07 INFO brokerOutApi_thread_1 - register broker[0]to name server dev-study:9876 OK
2023-07-20 23:05:07 INFO main - The broker[broker-a, dev-study:10911] boot success. serializeType=JSON and name server is dev-study:9876
2023-07-20 23:05:17 INFO BrokerControllerScheduledThread1 - dispatch behind commit log 0 bytes
2023-07-20 23:05:17 INFO BrokerControllerScheduledThread1 - Slave fall behind master: 0 bytes
2023-07-20 23:05:17 INFO brokerOutApi_thread_2 - register broker[0]to name server dev-study:9876 OK
2023-07-20 23:05:47 INFO brokerOutApi_thread_3 - register broker[0]to name server dev-study:9876 OK
2023-07-20 23:06:17 INFO BrokerControllerScheduledThread1 - dispatch behind commit log 0 bytes
2023-07-20 23:06:17 INFO BrokerControllerScheduledThread1 - Slave fall behind master: 0 bytes
2023-07-20 23:06:17 INFO brokerOutApi_thread_4 - register broker[0]to name server dev-study:9876 OK

注意事项

RocketMQ需要开通的端口如下:

  • rocketMQ自身占用9876

  • 非vip通道端口:10911

  • vip通道端口:10909 (只针对producer 而且4.5以后已经默认不开启了)

VIP通道其实就是多监听一个端口用于接受处理消息,因为默认端口通道可能很多在用,为了防止某些很重要的业务堵塞,就再开一个端口处理。这对于老版本的 RocketMQ 有消息接收队列的时候,作用可能大一点,对于目前的 RocketMQ 的设计,作用没那么大了。所以,这个默认就不开启了,留着只是为了兼容老版本。

  1. 其他:

记得Linux上修改文件权限:命令如下:chmod -R 777 /home/linux

RocketMQ默认的虚拟机内存较大,启动Broker如果因为内存不足失败,需要编辑如下两个配置文件,修改JVM内存大小。(但是这个也仅仅是在测试环境中,RocketMQ在生产上最低要求至少8G内存<官方推荐>才能确保RocketMQ的效果)

编辑runbroker.sh和runserver.sh修改默认JVM大小(windows上对应cmd文件)

vi runbroker.sh --broker的配置

vi runserver.sh --nameServer的配置

choose_gc_log_directory

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g"
choose_gc_options
JAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow"
JAVA_OPT="${JAVA_OPT} -XX:+AlwaysPreTouch"
JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=2g"
JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages -XX:-UseBiasedLocking"
#JAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"
JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
JAVA_OPT="${JAVA_OPT} -cp ${CLASSPATH}"

源码安装与调试

下载

https://archive.apache.org/dist/rocketmq/4.9.7/ 本文下载的版本:rocketmq-all-4.9.7-source-release.zip

环境要求

  • JDK1.8(64位)

  • Maven 3.2.x+,已经配置好阿里云仓库

IntelliJ IDEA导入

依次点击:File>Open,然后选中已经解压好的源代码路径。

载入后,确认Maven的路径是否正确,载入成功之后的图:

在这里插入图片描述
执行mvn install -Dmaven.test.skip=true命令,可以在右侧的Maven页签中双击,同时勾选Skip Test。
在这里插入图片描述

启动RocketMQ源码

启动NameServer

找到NameServer的启动类NamesrvStartup,然后点绿色箭头然后点Modify Run Configuration。

将ROCKETMQ_HOME加入到IDEA的环境变量中,同时在这个目录中创建conf、logs、store三个文件夹
在这里插入图片描述
从源码目录中的distribution目录下,将broker.conf、logback_broker.xml、logback_namesrv.xml复制到conf目录中
在这里插入图片描述
此时就可以通过启动类NamesrvStartup启动NameServer了。看到如下日志代表启动成功

D:\ProgramFiles\Java\jdk1.8.0_351\bin\java.exe " …
The Name Server boot success. serializeType=JSON

启动Broker

找到broker模块,同时找到启动类BrokerStartup.java,编辑启动参数

同NameServer,将ROCKETMQ_HOME加入到IDEA的环境变量中,在project argument中加入broker.conf文件地址。例如:-c xxx\broker.conf
在这里插入图片描述
然后通过启动类启动broker,成功的话会看到如下日志打印

The broker[broker-a, 192.168.3.129:10911] boot success. serializeType=JSON

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

接口自动化如何做?接口自动化测试- 正则用例参数化(实例)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 我们在做接口自动…

SpringCloud学习路线(9)——服务异步通讯RabbitMQ

一、初见MQ &#xff08;一&#xff09;什么是MQ&#xff1f; MQ&#xff08;MessageQueue&#xff09;&#xff0c;意思是消息队列&#xff0c;也就是事件驱动架构中的Broker。 &#xff08;二&#xff09;同步调用 1、概念&#xff1a; 同步调用是指&#xff0c;某一服务…

现在入行软测=49年入国军?三句话,让面试官再掏2K

还有一个月就步入金九银十&#xff0c;很多软测人吐槽因为疫情&#xff0c;公司都在裁员&#xff0c;别说跳槽涨薪&#xff0c;能保住现在的工作就不错了。 但也有那么一批人&#xff0c;凭借自己口才与实力拿到年薪近50W的offer。面试是初见1小时就要相互了解优缺点的过程&am…

JS学习之ES6

一、ES简介 Nodejs 安装&#xff1a; Babel 安装&#xff1a; let命令&#xff1a; 区别&#xff1a;以循环为例。 注意下面这种用法&#xff1a; 对象解构赋值&#xff1a; 字符串扩展&#xff1a; 字符串模板&#xff1a; 字符串方法&#xff1a; 数组扩展&#xff1a; 扩展…

mybatis_分页

目的&#xff1a; 减少数据处理量&#xff0c;提高效率 普通sql&#xff1a; 语法&#xff1a;select * from user limit startIndex,pageSize; SELECT * from user limit 3; #[0,n] mybatis_sql: 接口&#xff1a; //分页查询List<User> getUserByLimit(Map<…

解决@Scope(“prototype“)不生效的问题

目录 Scope(“prototype“)不生效Scope(“prototype“)正确用法——解决Bean多例问题 1.问题&#xff0c;Spring管理的某个Bean需要使用多例2.问题升级3. Spring给出的解决问题的办法&#xff08;解决Bean链中某个Bean需要多例的问题&#xff09; Scope(“prototype“)不生效 …

【自动话化运维】Ansible常见模块的运用

目录 一、Ansible简介二、Ansible安装部署2.1环境准备 三、ansible 命令行模块3.1&#xff0e;command 模块3.2&#xff0e;shell 模块3.3&#xff0e;cron 模块3.4&#xff0e;user 模块3.5&#xff0e;group 模块3.6&#xff0e;copy 模块3.7&#xff0e;file 模块8&#xff…

MQ - 闲聊MQ一二事儿 (Kafka、RocketMQ 、Pulsar )

文章目录 MQ的发展史阶段一&#xff1a;追求解耦阶段二&#xff1a;追求吞吐量与一致性阶段三&#xff1a;追求平台化 MQ的通用架构主题topic、生产者producer、消费者consumer分区partition MQ 存储KafkaGood Design ---> 磁盘顺序写盘Poor Impact---> topic 数量不能过…

云计算需求激增带来的基础设施挑战及解决方案

云计算的指数级增长迅速改变了我们消费和存储数字信息的方式。随着企业和个人越来越依赖基于云的服务和数据存储&#xff0c;对支持这些服务的强大且可扩展的基础设施的需求已达到前所未有的水平。 云计算需求的快速增长 我们的日常生活越来越多地被新技术所渗透。流媒体服务、…

用HTML写一个简单的静态购物网站

实现代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>购物网站</title> &l…

Nginx动静分离、资源压缩、负载均衡、黑白名单、防盗链等实战

一、前言 Nginx是目前负载均衡技术中的主流方案&#xff0c;几乎绝大部分项目都会使用它&#xff0c;Nginx是一个轻量级的高性能HTTP反向代理服务器&#xff0c;同时它也是一个通用类型的代理服务器&#xff0c;支持绝大部分协议&#xff0c;如TCP、UDP、SMTP、HTTPS等。 二、…

设计利器,掌握CAD辅助命令的必备指南

CAD设计中的辅助命令是提高效率和确度的关键工具。掌握并正确运用CAD中的各种辅助命令对于设计师们来说至关重要。本文将为你详细介绍如何使用CAD中的辅助命令&#xff0c;从而帮助你在设计过程中更加高效地实现你的创意。、 大家有没有发现&#xff0c;当我们的直线命令移动到…

D2L学习记录-10-词嵌入word2vec

NLP-1-词嵌入(word2vec) 参考: 《动手学深度学习 Pytorch 第1版》第10章 自然语言处理 第1、2、3 和 4节 (词嵌入) 词嵌入 (word2vec)&#xff1a; 词向量&#xff1a;自然语言中&#xff0c;词是表义的基本单元。词向量是用来表示词的向量。词嵌入 (word embedding)&#x…

利用MATLAB制作DEM山体阴影

在地理绘图中&#xff0c;我们使用的DEM数据添加山体阴影使得绘制的图件显得更加的美观。 GIS中使用ArcGIS软件就可以达到这一目的&#xff0c;或者使用GMT&#xff0c;同样可以得到山体阴影的效果。 本文提供了一个MATLAB的函数&#xff0c;可以得到山体阴影。 clear all;c…

Jmeter+验证json结果是否正确小技巧

前言&#xff1a; 通过sql语句或者返回的参数&#xff0c;可以在查看结果树返回的结果中&#xff0c;用方法先跑一下验证是否取到自己想要的值 步骤&#xff1a; 1、添加查看结果树 2、跑出结果 3、在查看结果树中 text改成选Json Path Tester 返回的值如果是列表里面的字符…

基于“RWEQ+”集成技术在土壤风蚀模拟与风蚀模数估算、变化归因分析中的实践应用及SCI论文撰写

土壤风蚀是一个全球性的环境问题。中国是世界上受土壤风蚀危害最严重的国家之一&#xff0c;土壤风蚀是中国干旱、半干旱及部分湿润地区土地荒漠化的首要过程。中国风蚀荒漠化面积达160.74104km2&#xff0c;占国土总面积的16.7%&#xff0c;严重影响这些地区的资源开发和社会经…

数据库访问和组件技术相关概念(ADO、ActiveX、DLL、ODBC等)详解

目录 背景概念ADO核心组件代码展示 ActiveX组件对象模型ADO与ODBC的关系 总结 背景 最近又再重新学习vb&#xff0c;老师说过无论学习什么知识一定不能独立的学习&#xff0c;学习编程语言也是一样&#xff0c;把两种或者三种语言放到一起进行比较&#xff0c;通过比较每种语言…

ThinkPHP8知识详解:ThinkPHP8是什么?

欢迎你来到PHP服务网学习最新的ThinkPHP8开发教程&#xff0c;本文介绍一下ThinkPHP8是什么&#xff1f; 1、ThinkPHP8是ThinkPHP框架的最新版本&#xff0c;它在之前版本的基础上进行了改进和优化。它采用了现代化的设计理念和架构&#xff0c;提供了更好的性能和更丰富的功能…

一文看完智能视频监控系统的工作原理及场景应用

智能视频监控系统的原理是利用摄像机采集视频信号&#xff0c;并通过相关的AI模型算法实时分析视频内容&#xff0c;提取出有用信息&#xff0c;如人脸、车牌号码、移动物体等&#xff0c;并进行识别及特征提取&#xff0c;最终形成监控报警、实时监控、历史录像回放等应用。 智…

华为数通HCIP-MPLS

传统ip转发 路由器根据流量的dip查找路由表进行转发&#xff1b; 缺陷&#xff1a;查找路由表需要消耗一定CPU开销&#xff1b;&#xff08;可以通过FIB表解决&#xff09; 安全性低&#xff0c;中间转发设备可以看到网络层ip信息&#xff1b; FIB(转发信息库&#xff09; 定…