前置·yum安装JDK1.8(openjdk)
- 先检查系统自带jdk
rpm -qa |grep java
rpm -qa |grep jdk
rpm -qa |grep gcj
- 批量卸载系统自带所有带有Java的文件
rpm -qa | grep java | xargs rpm -e --nodeps
- 安装java
yum list java*
yum list java-1.8*
yum install java-1.8.0-openjdk* -y
java -version
- 如果有类似如下的JAVA_HOME注释掉
- /usr/bin 目录下已经有java执行文件了,无需在配置
vi /etc/profile
#set java environment
#JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64
#PATH=$PATH:$JAVA_HOME/bin
#CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#export JAVA_HOME CLASSPATH PATH
source /etc/profile
rocketmq搭建
架构

-
Producer:就是消息生产者,可以集群部署。它会先和 NameServer 集群中的随机一台建立长连接,得知当前要发送的 Topic 存在哪台 Broker Master上,然后再与其建立长连接,支持多种负载平衡模式发送消息。
-
Consumer:消息消费者,也可以集群部署。它也会先和 NameServer 集群中的随机一台建立长连接,得知当前要消息的 Topic 存在哪台 Broker Master、Slave上,然后它们建立长连接,支持集群消费和广播消费消息。
-
Broker:主要负责消息的存储、查询消费,支持主从部署,一个 Master 可以对应多个 Slave,Master 支持读写,Slave 只支持读。Broker 会向集群中的每一台 NameServer 注册自己的路由信息。
-
NameServer:是一个很简单的 Topic 路由注册中心,支持 Broker 的动态注册和发现,保存 Topic 和 Borker 之间的关系。通常也是集群部署,但是各 NameServer 之间不会互相通信, 各 NameServer 都有完整的路由信息,即无状态。
下载
- 各版本下载
- 选择 rocketmq-all-xxx-bin-release.zip
配置
- 参考文档
- 下载后的文件导入linux并解压
unzip rocketmq-all-4.4.0-bin-release.zip
- 编辑runbroker.sh和runserver.sh修改默认JVM大小
cd rocketmq-all-4.4.0-bin-release/bin/
vi runbroker.sh
vi runserver.sh
# 参考设置
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -xx:MetaspaceSize=128m xx:MaxMetaspaceSize=320m"


使用
停止服务
防止之前服务器跑过该服务,先执行停止命令
sh mqshutdown broker
sh mqshutdown namesrv
启动服务
nohup sh mqnamesrv & # 本地启动NameServer
nohup sh mqnamesrv -n "xxx.xxx.xxx.xxx:9876" & # 外网启动NameServer
tail -f ~/logs/rocketmqlogs/namesrv.log # 查看日志
The Name Server boot success. serializeType=JSON 表示启动成功
nohup sh mqbroker -n localhost:9876 & # 本地部署NBroker
echo 'brokerIP1=xxx.xxx.xxx.xxx' > ../conf/broker.properties # 外网部署Broker
nohup sh mqbroker -n localhost:9876 -c ../conf/broker.properties autoCreateTopicEnable=true & # 外网部署Broker
tail -f ~/logs/rocketmqlogs/broker.log # 查看日志
register broker[0]to name server localhost:9876 OK 表示启动成功
如果报错ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)!!!
- 修改 runbroker.sh 和 runserver.sh 2个文件
- 这三行注释掉
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=$HOME/jdk/java
[ ! -e "$JAVA_HOME/bin/java" ] && JAVA_HOME=/usr/java
[ ! -e "$JAVA_HOME/bin/java" ] && error_exit "Please set the JAVA_HOME variable in your environment, We need java(x64)!"
- 将 export JAVA_HOME替换为export JAVA_HOME=JAVA_HOME中的路径
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.332.b09-1.el7_9.x86_64"
关于nohup
- nohup
如果你正在运行一个进程,而且你觉得在退出帐户时或者关闭客户端该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中。
nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思 - &
指在后台运行,但当用户退出(挂起)的时候,命令自动也跟着退出 - nohup COMMAND &
这样能使命令永久的在后台执行,nohup可以使用Ctrl+C结束掉,而&使用Ctrl+C则结束不掉,nohup不受终端关闭,用户退出影响,而&则受终端关闭,用户退出影响
开启端口:10911 10912 10909 9876
- 使用PowerShell测试外网端口是否开启
> Test-NetConnection xxx.xxx.xxx.xxx -port 9876
> Test-NetConnection xxx.xxx.xxx.xxx -port 10909
rocketmq控制台搭建
rocketmq-console
- RocketMQ有一个对其扩展的开源项目,incubator-rocketmq-externals,这个项目中有一个子模块叫rocketmq-console。这个便是管理控制台项目。步骤是先将incubator-rocketmq-externals从git拉到本地,然后对rocketmq-console进行操作(编译打包运行)
拉取项目
git clone https://github.com/SummerUnfair/rocketmq-externals.git
配置及使用
修改并启动rocketmq-console工程
-
在rocketmq-console中配置namesrc集群地址

-
命令窗口进入rocketmq-console工程目录进行打包
> clean package -Dmaven.test.skip=true
- 运行rokcetmq-console工程
> java -jar rocketmq-console-ng-1.0.0.jar

访问控制台
- 浏览器访问地址
http://localhost:8080/

本文详细介绍了如何在Linux环境下搭建RocketMQ,包括前置的JDK安装,RocketMQ的架构、下载、配置与启动,以及解决启动时可能遇到的JAVA_HOME问题。此外,文章还讲解了如何搭建和使用RocketMQ的控制台,包括拉取项目、配置、启动以及通过API访问控制台。
4161

被折叠的 条评论
为什么被折叠?



