RocketMQ 系列(二) 环境搭建

 


RocketMQ 系列(二) 环境搭建

上一个章节对于 RocketMQ 作了一些概念上的介绍,如果你对于 RocketMQ 没有概念,不妨先看RocketMQ系列(一) 基本介绍

这个章节主要介绍 RocketMQ 的环境搭建与安装。

1、准备工作

1.1、环境要求

  • Linux64 位系统
  • JDK1.8 64位及以上

1.2、安装 JDK1.8

RocketMQ 我在这里用的是 Linux 服务器安装的,安装之前需要先装好 JDK 。

查询 JDK 可用版本:

复制yum -y list java*

yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令

选择安装 JDK1.8:

yum install -y java-1.8.0-openjdk.x86_64   

检验安装:

java -version

2、安装 RocketMQ

2.1、下载并解压

下载地址:官网下载地址

首先在 Linux 服务器创建文件夹用于存放即将下载的 RocketMQ

mkdir usr/rocketmq
cd usr/rocketmq

文件夹创建好之后,从官网上复制想要下载的 RocketMQ 版本链接,我下载的版本是4.9.6,使用远程下载命令:

wget https://archive.apache.org/dist/rocketmq/4.9.6/rocketmq-all-4.9.6-bin-release.zip

下载完后解压:

unzip rocketmq-all-4.9.6-bin-release.zip

然后进入 rocketmq-all-4.9.6-bin-release 文件夹:

cd rocketmq-all-4.9.6-bin-release

文件夹包含了以下文件:

image-20230817103745306

  • bin:启动脚本,包括 shell 脚本和 CMD 脚本
  • conf:实例配置文件 ,包括 broker 配置文件、logback 配置文件等
  • lib:依赖 jar 包,包括Netty、commons-lang、FastJSON等

下载解压完成,那么剩下的就是怎么启动的问题了。

2.2、启动 NameServer

RocketMQ 默认的虚拟机内存较大,启动 Broker 或者 NameServer 可能会因为内存不足而导致失败,所以需要编辑这两个地方的配置文件,修改 JVM 内存大小

编辑 runserver.sh

vim bin/runserver.sh

按键盘 i 切换输入模式, 修改地方如下图:

image-20230817110335433

参考 JVM 参数设置
 -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m

ESC退回普通模式,输入:wq保存文件并退出 vim 编辑。

:wq
启动 NameServer
nohup sh bin/mqnamesrv &

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

想知道启动成功与否,那就要看对应的启动日志,查看 NameServer日志:

tail -f ~/logs/rocketmqlogs/namesrv.log

如果能看到以下日志,表示启动成功:

image-20230817111933793

2.3、启动 Broker

同理修改 BrokerNameServer类似,编辑 JVM 参数并启动。

编辑 runbroker.sh

vim bin/runbroker.sh

要修改的就是下图位置:

image-20230817112905116

参考 JVM 参数设置
 -server -Xms256m -Xmx256m -Xmn128m

保存并退出 vim 编辑。

修改 Broker 配置文件

Broker需要向NameServer注册,所以还需要指定NameServer的地址。

因为NameServerBroker 在同一台机器,所以是 localhost,NameServer 端口默认的是 9876。

编辑broker.conf

vim conf/broker.conf

在文件末尾添加以下配置:

namesrvAddr = localhost:9876
brokerIP1 = 192.168.0.17

brokerIP1记得修改成自己的服务器 IP 地址。

启动 Broker

启动时指定读取上面的配置文件:

nohup sh bin/mqbroker -c conf/broker.conf &
  • -c:指定配置文件路径
  • -n:NameServer 的地址

查看日志:

tail -f ~/logs/rocketmqlogs/broker.log

看到以下信息,说明已经启动成功了。

image-20230817171811008

2.4、测试

启动完NameServerBroker,可以进行简单的测试。

首先设置环境变量

export NAMESRV_ADDR=localhost:9876

发送消息

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

然后就是接收消息

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

接收到的消息截图如下:

image-20230817175626334

2.5、关闭 RocketMQ

关闭NameServerBroker的命令如下:

# 1.关闭NameServer
sh bin/mqshutdown namesrv
# 2.关闭Broker
sh bin/mqshutdown broker

2.6、开放端口

启动完 RocketMQ后,要开放的端口一般有4个:9876,10911,10912,10909

端口说明
  • 9876:Nameserver 的端口

  • 10911: listenPort, 是 Broker的监听端口,是 RemotingServer 服务组件使用,作为对 Producer 和 Consumer 提供服务的端口号,默认为10911,可以通过 broker.conf 配置文件修改。

    #Broker 对外服务的监听端口
    listenPort=10911
    
  • 10909:fastListenPort, 是 fastRemotingServer 服务组件使用,默认为 listenPort - 2,可以通过 broker.conf 配置文件修改。

    #主要用于slave同步master
    fastListenPort=10909
    
  • 10912:haListenPort, 是HAService服务组件使用,用于Broker的主从同步,默认为listenPort + 1,可以通过配置文件修改。

    #haService中使用
    haListenPort=10912
    
防火墙开放端口

查看防火墙状态:

systemctl status firewalld

开放上述四个端口:

firewall-cmd --zone=public --add-port=9876/tcp --permanent
firewall-cmd --zone=public --add-port=10911/tcp --permanent
firewall-cmd --zone=public --add-port=10909/tcp --permanent
firewall-cmd --zone=public --add-port=10912/tcp --permanent

重启防火墙:

firewall-cmd --reload

查看防火墙所有开放的端口

firewall-cmd --list-port
服务器安全组开放端口

除了防火墙开放端口之外,服务器安全组也要设置上述四个端口对外开放,我用的是华为的云服务器,在安全组里添加入方向规则,规则填写上述四个端口

image-20230817233630745

3、搭建可视化控制台

前面 NameServer 和 Broker 搭建完成之后,就可以用来收发消息了,但是为了更加直观,可以搭建对应的服务控制台。

3.1、下载

下载地址:https://github.com/apache/rocketmq-dashboard/releases/tag/rocketmq-dashboard-1.0.0

Github 界面如下,点击下载压缩包或直接 clone :

image-20230819020247128

3.2、修改配置文件

IDEA 打开刚解压的资源,修改配置文件:

image-20230817191850007

修改 localhost 为自己的 Linux 服务器公网 IP 地址。

3.3、运行 jar 包

完善 pom.xml 下 node 资源下载:

<configuration>
    <nodeDownloadRoot>https://cdn.npmmirror.com/binaries/node/</nodeDownloadRoot>
    <nodeVersion>v16.2.0</nodeVersion>
    <yarnVersion>v1.22.10</yarnVersion>
</configuration>

删掉 frontend-maven-plugin 相关插件:

image-20230819020836804 image-20230819020934531

执行 maven 打包命令:

mvn clean package -Dmaven.test.skip=true

打包完成后执行 jar 包,命令如下:

java -jar target/rocketmq-dashboard-1.0.0.jar

我的 jar 包是在本地运行的,所以直接访问 localhost:8080,而如果把 jar 包部署在 Linux 服务器上的,就访问http://Linux服务器ip:8080

访问界面如下:

image-20230817234440902

3.4、Chrome topic 查询踩坑

原本我是非常信任 chrome 浏览器的,但是在使用控制台的 topic 查询时出现了组件的兼容性问题,导致无法触发查询,所以这次我要给它个差评。

chrome 踩坑版本如下:

image-20230823224831401

在消息的查询页面,选择 TOPIC 选项,下拉选择主题及选择时间,然后点击搜索按钮,F12 打开调试窗口,可以发现没有办法进行接口调用。

image-20230823225345341

这个坑非常的隐蔽,因为 MESSAGE KEY 和 MESSAGE ID 两种查询的搜索组件是能正常使用的,所以没有第一时间想到是组件兼容性问题。

我试过采用旧版本的 dashboard(2017版本),也试过下调 RocketMQ 版本(4.9.6 -> 4.7.1),又翻遍了 github 的 issue, 都没能解决这个查询问题,最后实在没办法 F12 打开调试窗口想要排查具体调用的接口,万万没想到根本就没有进行调用,顿时一阵心累。

然后我用 Edge 浏览器执行同样的 topic 查询,搜索组件能正常调用接口:

image-20230823230900940

所以这里不建议用 Chrome 访问控制台了。

到这里基本的 RocketMQ 环境搭建完毕。关于如何搭配 SpringBoot 使用下个章节进行演示。

参考资料:

posted @   MyDistance  阅读(1268)  评论(4编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示

目录导航

RocketMQ 系列(二) 环境搭建
1、准备工作
1.1、环境要求
1.2、安装 JDK1.8
2、安装 RocketMQ
2.1、下载并解压
2.2、启动 NameServer
参考 JVM 参数设置
启动 NameServer
2.3、启动 Broker
参考 JVM 参数设置
修改 Broker 配置文件
启动 Broker
2.4、测试
2.5、关闭 RocketMQ
2.6、开放端口
端口说明
防火墙开放端口
服务器安全组开放端口
3、搭建可视化控制台
3.1、下载
3.2、修改配置文件
3.3、运行 jar 包
3.4、Chrome topic 查询踩坑