记RocketMQ本地开发环境搭建始末

前言

最近工作中涉及到了RocketMQ的应用,为方便开发决定本地搭建一套RocketMQ的使用环境。

果然实践是个好东西...

VMware虚拟环境搭建

这个网上有很多教程,只会比我写的详细有条理,这里就不在赘述了。

虚拟机搭建好之后每次重启电脑都无法正常使用,明明前一秒还在愉悦的操练着。

如上图就是不再快乐的现象,如下图就是可以继续快乐的解决方法。

其实是NAT的服务未启动导致的。

计算机右击选择管理

RocketMQ搭建
官网下载

 下载 | RocketMQ

我这里以4.9.5的版本进行的搭建

上传解压

上传到自定义的目录下解压,我的是:/app/rocketmq/rocketmq-all-4.9.5-bin-release 仅做参考

下图是解压后的目录结构

调整运行内存配置

由于感情深厚的电脑性能有限,所有bin/runserver.sh脚本里的内存配置需要调小些:

jdk是1.8的版本所以只改这里就好了。

同样的修改bin/runbroker.sh脚本里的内存配置:

启动服务

RocketMQ有两类服务需要启动,一类是nameService,一类是brokerService。

#启动nameService

cd /app/rocketmq/rocketmq-all-4.9.5-bin-release

nohup bin/mqnamesrv &

#启动brokerService

cd /app/rocketmq/rocketmq-all-4.9.5-bin-release

nohup bin/mqbroker &

#查看启动日志

tail -f nohup.out

成功日志如下:

快速体验

RocketMQ提供了可以快速体验消息收发功能的脚本

cd /app/rocketmq/rocketmq-all-4.9.5-bin-release/bin

#生产者发消息

tools.sh org.apache.rocketmq.example.quickstart.Producer 

#消费者消费消息

tools.sh org.apache.rocketmq.example.quickstart.Consumer

RocketMQ Dashboard 搭建

RocketMQ Dashboard 是官方提供的一款可视化管理服务

官网下载

下载 | RocketMQ

官方只提供了源码,需要自行使用maven进行编译。

修改配置

上传解压

上传至自定义的目录并解压,我的是:/app/rocketmq/rocketmq-dashboard-1.0.0 仅做参考

maven编译

cd /app/rocketmq/rocketmq-dashboard-1.0.0

mvn clean package -Dmaven.test.skip=true

启动服务

编译之后该目录会出现target文件夹,target内有打好的jar包

#执行命令启动dashboard服务

java -jar rocketmq-dashboard-1.0.0.jar

打印这个日志说明成功了,上面显示了端口8800

若浏览器输入地址后提示无法访问此网站,则是由于虚拟机防火墙导致的,简单粗暴就是把防火墙关掉并且开机禁止自启,要么就放开端口(记得重启防火墙不然不生效)。

#检查防火墙是否启用

firewall-cmd --state

#启动防火墙

systemctl start firewalld

#停止防火墙

systemctl stop firewalld

#重启防火墙

systemctl restart firewalld

#开机自启动防火墙

systemctl enable firewalld

#禁止开机自启动防火墙

systemctl disable firewalld

#打开8800端口,添加永久规则

firewall-cmd --zone=public --add-port=8800/tcp --permanent

#关闭8800端口,移除永久规则

firewall-cmd --zone=public --remove-port=8800/tcp --permanent

访问

然后欢迎来到Dashboard

RocketMQ 分布式集群搭建

你知道的我是不会满足于单节点部署的

虚拟机准备

首先对虚拟机进行克隆,这样每台机子的信息,装的插件等等都是一样的,用之前只需要改一下主机名称、静态的ip地址就可以了。

#修改主机名称

hostnamectl set-hostname centos2

#查看主机名称

hostname

#修改静态IP

cd /etc/sysconfig/network-scripts/

vi ifcfg-ens32

集群配置文件

贴心的官方为我们提供了多种集群部署的配置文件模板

2m-noslave:2主无从

2m-2s-sync:2主2从同步

2m-2s-async:2主2从异步

dledger:dledger高可用集群

修改配置

这次按照2m-2s-async部署

主机用途1用途2
centos1部署NameServer1部署Dashboard
centos2部署NameServer2部署BrokerServer-a,BrokerServer-b-s
centos3部署NameServer3部署BrokerServer-b,BrokerServer-a-s

第一组broker服务

broker-a.properties

broker-b-s.properties

第二组broker服务

broker-b.properties

broker-a-s.properties

注意:store的路径不能一样,不然同一台机子启动第二个broker服务时会报错,如下:

java.lang.RuntimeException: Lock failed,MQ already started
        at org.apache.rocketmq.store.DefaultMessageStore.start(DefaultMessageStore.java:240)
        at org.apache.rocketmq.broker.BrokerController.start(BrokerController.java:855)
        at org.apache.rocketmq.broker.BrokerStartup.start(BrokerStartup.java:63)
        at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:57)

这是因为abort是RocketMQ判断服务是否正常关闭的一个标识文件,正常情况下,会在启动时创建,在关闭服务时删除。但如果遇到类似服务器宕机,或者kill -9等非正常关闭服务的情况,这个abort文件不会删除,因此RocketMQ就可以据此判断上一次服务是否正常关闭,非正常则后续就会做一些数据恢复的操作。

启动服务

#第一组服务启动

cd /app/rocketmq/rocketmq-all-4.9.5-bin-release/

nohup bin/mqbroker -c ./conf/2m-2s-async/broker-a.properties &

nohup bin/mqbroker -c ./conf/2m-2s-async/broker-b-s.properties &

#第二组服务启动

cd /app/rocketmq/rocketmq-all-4.9.5-bin-release/

nohup bin/mqbroker -c ./conf/2m-2s-async/broker-b.properties &

nohup bin/mqbroker -c ./conf/2m-2s-async/broker-a-s.properties &

检查集群服务

cd /app/rocketmq/rocketmq-all-4.9.5-bin-release/bin

mqadmin clusterList

Dashboard配置

修改application.properties文件的rocketmq.config.namesrvAddr属性

cd /app/rocketmq/rocketmq-dashboard-1.0.0/src/main/resources

vi application.properties

修改后重新编译即可

若出现下面报错则需要添加环境变量

vi /etc/profile

export NAMESRV_ADDR='localhost:9876'

source /etc/profile

出现下面报错则需要放开对应的端口。

网上很多说broker的配置要添加brokerIP1=xx.xx.xx.xx,咱们是用的本机不是云服务器,所有不用。

需开放的端口

每个服务器需开放七个端口
namesrv:9876
broker主节点:10911、10909、10912
broker从节点:11011、11009、11012
端口规则说明:
namesrv默认端口:9876
broker配置的listenPort 端口:10911
vip通道端口为:listenPort - 2 = 10909
ha通道端口为:listenPort + 1 = 10912

其他命令

查看所有的topic:sh mqadmin topicList -n nameserver地址

查看自定的topic:sh mqadmin topicList -n nameserver地址 | grep YourTopicName

查看消费者信息:sh mqadmin consumerProgress -n nameserver地址

查看消费者信息:sh mqadmin consumerProgress -n nameserver地址 -g yourConsumerGroup

查看Broker状态:sh mqadmin brokerStatus -n nameserver地址 -b brokerIP

未完待续...

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

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

相关文章

nginx配置反向代理及负载均衡

目录 1.前端发送的请求,是如何请求到后端服务的1.nginx 反向代理的好处:2.nginx 反向代理的配置方式:3. nginx 负载均衡的配置方式 1.前端发送的请求,是如何请求到后端服务的 1.nginx 反向代理的好处: 提高访问速度 因…

全系降3万,一把干到底,极越「智取」特斯拉

作者|德新 编辑|王博 11月30日,极越01官宣全系降价3万。 这意味着21.99万起步的极越01 Max,成为这个市场上入门门槛最低的带有城市智能驾驶辅助功能的车型。 要知道这是一台比Model Y大了一圈,全系配置了高阶智驾硬件,全系配高…

Apache HTTPD 2.448 mod_proxy SSRF漏洞(CVE-2021-40438)

任务一: 复现漏洞 任务二: 尝试利用SSRF漏洞,访问重庆邮电大学官网(http://www.cqupt.edu.cn) 1.搭建环境 2.了解这个地方是httpd作为了一个反向代理服务器,也就是先是客户端发送请求给代理服务器,然后…

Neo4j 程序开发 JavaAPI 嵌入式开发模式(头歌)

文章目录 第1关:JavaAPI 嵌入式开发模式任务描述相关知识创建 Neo4j 数据库启动 Neo4j 数据事务创建节点创建节点关系将创建的数据库设置为默认数据库 编程要求测试说明答案代码修改配置文件,更改默认 Neo4j 数据库代码文件 第1关:JavaAPI 嵌…

【文献阅读笔记】关于GANomaly的异常检测方法

文章目录 1、GANomaly: Semi-Supervised Anomaly Detection via Adversarial Training模型主要创新 2、Skip-GANomaly: Skip Connected and AdversariallyTrained Encoder-Decoder Anomaly Detection模型主要创新点 3、Industrial surface defect detection and localization u…

YOLOv8改进 | 2023 | AKConv轻量级架构下的高效检测(可变核卷积)

一、本文介绍 本文给大家带来的改进内容是AKConv(可变核卷积)是一种创新的卷积神经网络操作,它旨在解决标准卷积操作中的固有缺陷(采样形状是固定的),AKConv的核心思想在于它为卷积核提供了任意数量的参数…

RTDETR阅读笔记

RTDETR阅读笔记 摘要 DETR的高计算成本限制了它们的实际应用,并阻碍了它们充分利用无需后处理(例如非最大抑制NMS)的优势。文中首先分析了NMS对实施目标检测的精度和速度的负面影响。(RTDETR是第一个实时端到端的目标检测器。具…

Word 小知识之 docx 和 doc 的区别

下面我们从4个方面为大家总结了有关于docx和doc的区别,一起来看一看: 1. 文件格式 doc和docx的区别中较大的区别就是文件格式不同,一个是二进制一个为XML格式。doc:是早期的Word文档格式,采用二进制文件格式。这种…

ipa应用测试平台怎么开开具发票

控制台-个人中心-发票管理 ●点击申请发票可以开具发票 ●申请发票-填写资料-勾选订单 ●个人发票开具以及公司发票开具 ●提交发票申请 ●等待申请成功开具发票 ●发票开具成功,我们可以开具或者查看发票

二分查找与搜索树高频问题

关卡名 逢试必考的二分查找 我会了✔️ 内容 1.山脉数组的峰顶索引 ✔️ 2.旋转数字的最小数字 ✔️ 3.寻找缺失数字 ✔️ 4.优化求平方根 ✔️ 5.中序与搜索树原理 ✔️ 6.二叉搜索树中搜索特定值 ✔️ 7.验证二叉搜索树 ✔️ 基于二分查找思想,可以拓展出很…

conda 安装指定Version的指定Build

入下图,我想装cudnn的7.6.5的指定Build版本cuda10.0_0 应该使用如下命令: mamba install cudnn7.6.5cuda10.0_0 没有mamba用conda install也可以

04 # 第一个 TypeScript 程序

初始化项目以及安装依赖 新建 ts_in_action 文件夾 npm init -y安装好 typescript,就可以执行下面命令查看帮助信息 npm i typescript -g tsc -h创建配置文件,执行下面命令就会生成一个 tsconfig.json 文件 tsc --init使用 tsc 编译一个 js 文件 新…

daima8资源网整站数据打包完整代码(集成了ripro9.1主题,开箱即用)

基于ripro9.1完全明文无加密后门版本定制开发,无需独立服务器,虚拟主机也可以完美运营,只要主机支持php和mysql即可。整合了微信登录和几款第三方的主题文件,看起来更美观一些。站长本人就是程序员,所以本站的代码资源…

PyCharm关闭很慢的解决办法

使用PyCharm2023.2.5的时候碰到了一个问题,每次关闭项目的时候都很慢很慢,在网上查了,有可能是因为缓存的问题,于是试着清除缓存,发现还是没有用,关闭的时候还是很慢,后面看到一种解决办法&…

算法:笛卡尔平面坐标系上,若干连接点形成线,剔除距离小于阈值的点,Kotlin

算法&#xff1a;笛卡尔平面坐标系上&#xff0c;若干连接点形成线&#xff0c;剔除距离小于阈值的点&#xff0c;Kotlin const val THRESHOLD 0.6f //距离小于这个点将被剔除。data class Point(val x: Float, val y: Float)fun removeNearbyPoint(points: List<Point>…

指针概念及应用

指针的相关概念 1.指针是什么&#xff1f; 指针是内存中的一个最小单元的编号&#xff0c;其实就是指地址&#xff0c;对于我们平时口中所讲述的指针&#xff0c;通常指的是指针变量&#xff0c;指针变量是用来存放内存地址的变量。 2.地址与指针 一个32位机器在一个进程中…

多线程原理和常用方法以及Thread和Runnable的区别

文章目录 &#x1f366;多线程原理&#x1f367;随机性打印&#x1f368;多线程内存图解 &#x1f369;Thread类的常用方法&#x1f36a;获取线程名称 getName()&#x1f382;设置线程名称 setName() 或者 new Thread("线程名字")&#x1f370;使当前正在执行的线程以…

python 交互模式和命令行模式的问题

python 模式的冲突 unexpected character after line continuation character 理论上 ide里&#xff0c;输入 python 文件路径\文件.py 就可以执行 但是有时候却报错 unexpected character after line continuation character 出现上述错误的原因是没有退出解释器&#x…

JMeter从入门到精通

1、 jmeter的介绍 jmeter也是一款接口测试工具&#xff0c;由java语言开发的&#xff0c;主要进行性能测试。 2、jmeter安装 jmeter官网下载链接&#xff1a; https://jmeter.apache.org/download_jmeter.cgi &#xff0c;查看是否安装成功【jmeter -v】 下载 java jdk1.8&…

计算一个4+4+1的队形变换问题

2 2 1 1 2 2 2 2 1 1 2 2 3 3 A A 3 3 4 4 A 12 4 4 4 4 12 A 4 4 2 2 1 1 2 2 操场上有4个人以4a1的结构在6*6的平面上运动&#xff0c;行分布是0&#xff0c;0&#xff0c;0&#xff0c;1&#xff0c;1&#xff0c;2&#xff0c;列分布…