记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

未完待续...

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

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

相关文章

【投稿优惠、可EI检索】2024年机器人学习与自动化算法国际学术会议(IACRLAA 2024)

2024年机器人学习与自动化算法国际学术会议(IACRLAA 2024) 2024 International Academic Conference on Intelligent Control Systems and Robot Learning 一、【会议简介】 本届机器人学习与自动化算法国际学术会议(IACRLAA 2024)将于2024年1月23日在北京盛大开幕。这次会议将…

Vue3 Router跳转传参

最近遇到这个问题router跳转传参,真是要了老命了。 根据网上各位大神给出的方法,试了 import { useRouter } from vue-routerconst router useRouter()//1. 无法跳转 router.push(name:,params:{})//2. 可以跳转, 但需要在定义router同时定义占位符&a…

(五)基于高尔夫优化算法GOA求解无人机三维路径规划研究(MATLAB代码)

一、无人机模型简介: 单个无人机三维路径规划问题及其建模_IT猿手的博客-CSDN博客 参考文献: [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120 二、高尔夫优化算法GOA简介 高尔夫优化算法…

react-flip-move结合array-move实现前端列表置顶效果

你有没有遇到这样的需求?点击左侧列表项,则像聊天会话窗口一样将被点击的列表项置顶。 如果只是单纯的置顶的话,直接使用array-move就可以实现了,但置顶效果多少有点突兀~ 先上代码,直接使用array-move的情况&#xf…

用于缓存一些固定名称的小组件

项目中,用于缓存姓名、地名、单位名称等一些较固定名称的id-name小组件。用于减少一些表的关连操作和冗余字段。优化代码结构。扩展也方便,写不同的枚举就行了。 具体用法: {NameCacheUser.USER.getName(userId);NameCacheUser.ACCOUNT.getN…

文心一言 VS 讯飞星火 VS chatgpt (146)-- 算法导论12.2 1题

一、用go语言,假设一棵二叉搜索树中的结点在1到 1000 之间,现在想要查找数值为 363 的结点。下面序列中哪个不是查找过的序列? a.2,252,401,398,330,344,397,363。 b.9…

vtk中二次曲面的显示

官方示例地址: https://examples.vtk.org/site/Cxx/Visualization/DisplayQuadricSurfaces/ 显示效果: 源码: import vtk import vtkmodules.vtkInteractionStyle import vtkmodules.vtkRenderingOpenGL2 from vtkmodules.vtkCommonColor i…

SAP SD 创建交货单 报错 VL461 VL248

因为生产环境已经被改好了,无法跟踪 所以换到测试环境重现一把,如何追根究底 对比正常订单发现 计划行 VBEP-LMENG,VBEP-BMENG这两个字段上的值跟 订单数量不一致。 尝试修改2者的数据跟订单数据一致,则可以正常创建交货单 实际原因是&a…

Neo4j 数据库管理 数据备份与恢复(头歌)

文章目录 第1关:数据备份与恢复任务描述相关知识数据备份数据导入 编程要求测试说明答案测试前准备Cypher 代码数据备份与导入 第1关:数据备份与恢复 任务描述 本关任务:熟练掌握数据备份与恢复。 相关知识 为了完成本关任务,…

INFINI Easysearch 与华为鲲鹏完成产品兼容互认证

何为华为鲲鹏认证 华为鲲鹏认证是华为云围绕鲲鹏云服务(含公有云、私有云、混合云、桌面云)推出的一项合作伙伴计划,旨在为构建持续发展、合作共赢的鲲鹏生态圈,通过整合华为的技术、品牌资源,与合作伙伴共享商机和利…

基于单片机的排队叫号系统设计

1.设计任务 利用AT89C51单片机为核心控制元件,设计一个节日彩灯门,设计的系统实用性强、操作简单,实现了智能化、数字化。 基本要求:利用单片机AT89C51设计排队叫号机,能实现叫号功能。 创新:能显示叫号…

算法通关村第一关—链表高频面试题(白银)

链表高频面试题 一、五种方法解决两个链表的第一个公共子节点的问题 面试 02.07.链表相交1.首先想到的是暴力解,将第一个链表中的每一个结点依次与第二个链表的进行比较,当出现相等的结点指针时,即为相交结点。虽然简单,但是时间…

sso单点登录

一:业务需求 客户要求在门户网站上实现一次登录能访问所以信任的系统 二: 处理方式 实现sso单点登录需要前后端配合处理 1. 通过网页授权登录获取当前用户的openid,userid 2.设置单点登录过滤器并进行参数配置 3.另外写一个登录接口&…

制造企业建设数字工厂管理系统的难点主要有哪些

随着科技的飞速发展,制造企业正面临着从传统生产模式向数字化、智能化转型的挑战。其中,建设数字工厂管理系统是实现这一目标的重要途径。然而,在实际操作过程中,制造企业往往会遇到一系列难点。本文将对这些难点进行详细的分析。…

socket.io介绍

1. 使用的技术 Socket.IO 是一个封装了 Websocket、基于 Node 的 JavaScript 框架,包含 client 的 JavaScript 和 server 的 Node。其屏蔽了所有底层细节,让顶层调用非常简单。 另外,Socket.IO 还有一个非常重要的好处。其不仅支持 WebSocket…

Vue H5页面长按保存为图片

安装依赖&#xff1a;npm install html2canvas -d <template><div class"index"><div id"captureId" class"capture" v-show"firstFlag"><ul><li>1</li><li>2</li><li>3<…

R语言实操记录——R包无法安装,报错:Warning in system(cmd) : ‘make‘ not found

R语言 R语言实操记录——R包无法安装&#xff0c;报错&#xff1a;Warning in system(cmd) : ‘make‘ not found 文章目录 R语言一、起因二、具体步骤2.1、确认问题源2.2、安装RTools2.3、与R(/Rstudio)绑定2.4、验证可行性 三、疑惑 一、起因 R语言在包的安装上是真的方便&…

Prosys OPC Client连接OPC DA

Prosys OPC Client连接OPC DA Prosys OPC 客户端将帮助排除 OPC 连接故障并测试 OPC 服务器。 您可以读写数据、浏览服务器以及导出和导入地址空间。 OPC 客户端轻巧、快速且易于使用。 支持 OPC DA 1.0a 和 OPC DA 2.05a 官方地址: https://www.prosysopc.com/products/opc-…

SpringBoot 整合 Neo4j 实战(头歌)

文章目录 第1关&#xff1a;认识 Spring DATA Neo4J任务描述相关知识Spring DATA Neo4J - 简介Spring JDBC / Spring ORM 模块的缺点&#xff1a;Spring 数据模块的优点&#xff1a;Spring 数据模块功能&#xff1a;Spring DATA Neo4j 模块的附加功能&#xff1a; Spring DATA …

联想SR660V2服务器重置BMC后无法设置BMC管理IP

之前登录后台显示BMC账号密码不对&#xff0c;然后把BMC重置了&#xff0c;重置以后发现无法设置IP地址 联想官方的回复是&#xff1a; 1. 机器AC上电后&#xff0c;需等待7分钟左右, 再开机&#xff0c;让bmc完全启动。 2. 在UEFI及系统下配置bmc网络&#xff0c;需等待3分钟…