海口建设网站,阿里巴巴做网站需要多少钱,网站备案 年审,农业产品如何建网站文章说明
本文主要说明RocketMQ的几种常见的安装方式。之前在工作中也用过RocketMQ#xff0c;但是一直用的是测试环境上的#xff0c;也没有自己动手安装过。这次专门抽了时间学习了一下。 文章目录 文章说明参考文献安装windows安装环境要求下载配置环境变量启动注意事项 …文章说明
本文主要说明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 autoCreateTopicEnabletrue’启动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 brokerIP1dev-study 启动命令如下
nohup sh mqbroker -c …/conf/broker.conf -n dev-study:9876 autoCreateTopicEnabletrue
这样启动的服务器客户端可以自动创建主题。
查看日志的命令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. serializeTypeJSON 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 的设计作用没那么大了。所以这个默认就不开启了留着只是为了兼容老版本。
其他
记得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_directoryJAVA_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:MaxDirectMemorySize2g
JAVA_OPT${JAVA_OPT} -XX:-UseLargePages -XX:-UseBiasedLocking
#JAVA_OPT${JAVA_OPT} -Xdebug -Xrunjdwp:transportdt_socket,address9555,servery,suspendn
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导入
依次点击FileOpen然后选中已经解压好的源代码路径。
载入后确认Maven的路径是否正确载入成功之后的图 执行mvn install -Dmaven.test.skiptrue命令可以在右侧的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. serializeTypeJSON 启动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. serializeTypeJSON