记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.rhkb.cn/news/207052.html

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

相关文章

智能优化算法应用:基于风驱动算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于风驱动算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于风驱动算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.风驱动算法4.实验参数设定5.算法结果6.参考文献7.…

vue3实现element table缓存滚动条

背景 对于后台管理系统,数据的展示形式大多都是通过表格,常常会出现的一种场景,从表格跳到二级页面,再返回上一页时,需要缓存当前的页码和滚动条的位置,以为使用keep-alive就能实现这两种诉求,…

threeJs引入模型使用3D模型(vite+React+Ts)

要在 Three.js 中使用 3D 模型,你需要加载模型文件并将其添加到场景中。Three.js 支持多种不同的模型格式,比如 OBJ、FBX、GLTF 等。 init vitelatest //创建一个vite的脚手架 选择react并配置Ts 安装three.js准备 npm install react-three/drei np…

阿里云新版公共实例从注册账号到创建设备生成参数教程

1 注册阿里云 打开阿里云官网,点击右上角的登录/注册 打开的界面按照图片输入手机号注册 注册成功后,登录返回第一次打开的界面,点击控制台 点击控制台后界面如下 点击左上角的菜单,弹出新窗口,搜索物联网平台 开通物…

Wireshark之Intro, HTTP, DNS

源码地址👇 moranzcw/Computer-Networking-A-Top-Down-Approach-NOTES: 《计算机网络-自顶向下方法(原书第6版)》编程作业,Wireshark实验文档的翻译和解答。 (github.com) 目录 🌼Introduce 🎧前置 🎧过…

MySQL之 InnoDB逻辑存储结构

InnoDB逻辑存储结构 InnoDB将所有数据都存放在表空间中,表空间又由段(segment)、区(extent)、页(page)组成。InnoDB存储引擎的逻辑存储结构大致如下图。下面我们就一个个来看看。 页&#xff08…

数据结构-二叉树(1)

1.树概念及结构 1.1树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 1.有一个特殊的结点&…

Electronica慕尼黑电子展 Samtec团队与21ic分享虎家产品与方案

【摘要/前言】 “希望但凡是能够使用到连接器的场合都有Samtec的身影” 在慕尼黑上海电子展现场,Samtec华东区销售经理章桢彦先生在与21ic副主编刘岩轩老师的采访中,如是说道。这是一种愿景,更是Samtec的努力方向。短短一句话,…

自定义 element DatePicker组件指令 使选择器呈现为只读状态,用户无法直接编辑,但可以查看和选择日期

1.问题 现实中遇到列表的搜索条件使用DatePicker 组件进行开始结束时间筛选,但是手动修改input中的值,导致请求参数异常。比如讲clearable设置为false之后还是能手动清空输入框中的值。虽然组件提供了readonly 属性,但是也会让日期选择也无法…

详解Java中的泛型(泛型的语法,擦除机制,泛型的上界)

目录 一.什么是泛型 二.Java中为什么要使用泛型 三.泛型的语法 四.泛型类的使用 五.泛型的编译机制(擦除机制) 六.泛型的上界 一.什么是泛型 泛型(Generics)是Java SE 5中引入的一个新特性,可以使Java中的类和方…

Unity安装

DAY1 下载Unity 打开Unity3D官网,下载Unity Hub,管理Unity的软件。链接https://unity.cn/releases (可能需要注册账号,就正常注册登录即可) 如果是新版的hub,可能长下面这个样子,还是英文的,点击圆圈的设…

maven 将Jar包安装到本地仓库

window系统: 注意事项:在windows中,使用mvn指令将jar安装到本地仓库时,一定要将相关资源使用“"”包裹上,不然会报下面的错: mvn install:install-file "-DfileD:\BaiduNetdiskDownload\qianzixi…

内网穿透的应用-Jupyter Notbook+cpolar内网穿透实现公共互联网访问使用数据分析工作

文章目录 1.前言2.Jupyter Notebook的安装2.1 Jupyter Notebook下载安装2.2 Jupyter Notebook的配置2.3 Cpolar下载安装 3.Cpolar端口设置3.1 Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 在数据分析工作中,使用最多的无疑就是各种函数、图表、…

[C++]六大默认成员函数详解

☃️个人主页:fighting小泽 🌸作者简介:目前正在学习C和Linux 🌼博客专栏:C入门 🏵️欢迎关注:评论👊🏻点赞👍🏻留言💪🏻 …

Java项目学生管理系统二查询所有

学生管理 近年来,Java作为一门广泛应用于后端开发的编程语言,具备了广泛的应用领域和丰富的开发资源。在前几天的博客中,我们探讨了如何搭建前后端环境,为接下来的开发工作打下了坚实的基础。今天,我们将进一步扩展我…

Git分支批量清理利器:自定义命令行插件实战

说在前面 不知道大家平时工作的时候会不会需要经常新建git分支来开发新需求呢?在我这边工作的时候,需求都是以issue的形式来进行开发,每个issue新建一个关联的分支来进行开发,这样可以通过issue看到一个需求完整的开发记录&#x…

C语言练习记录(蓝桥杯练习)(小蓝数点)

目录 小蓝数点 第一题程序的输出结果是?: 第二题下面代码的执行结果是什么?: 第三题下面代码的执行结果是什么?: 第四题关于关系操作符说法错误的是?: 第五题对于下面代码段,y的值为? 第六题sum 21 …

python——第十五天

面向对象和面向对象编程 面向对象编程: C语言是一门面向过程的编程语言!!! 面向对象的编程思想 就是分门别类的一种能力 面向对象的概念 类: 对一类事物的统称 对象: 一类事物中的具体案例 面向对象的…

ArkTS-自定义弹窗

自定义弹窗 通过CustomDialogController类显示自定义弹窗。使用弹窗组件时,可优先考虑自定义弹窗,便于自定义弹窗的样式与内容。 CustomDialogController仅在作为CustomDialog和Component struct的成员变量,且在Component struct内部定义时赋…

Java中的JMX的使用

文章目录 1. 定义和存在的意义2. 架构2.1 Instrumentation2.2 JMX Agent2.3 Remote Management 3. 启动和连接3.1 注册MBean3.2 有两个方式启动JMX Agent3.3 Remote Management(客户端) 4. MBeanServerConnection使用4.1 列出所有的MBean4.2 列出所有的Domain4.3 MBean计数4.4 …