RocketMQ5.3.1的安装

发布于:2025-07-27 ⋅ 阅读:(10) ⋅ 点赞:(0)
1、下载安装
RocketMQ 的安装包分为两种,二进制包和源码包。

1 下载 Apache RocketMQ 5.3.1的源码包后上传到linux
https://dist.apache.org/repos/dist/release/rocketmq/5.3.1/rocketmq-all-5.3.1-source-release.zip

2 解压编译
$ unzip rocketmq-all-5.3.1-source-release.zip
$ cd rocketmq-all-5.3.1-source-release/
$ mvn -Prelease-all -DskipTests -Dspotbugs.skip=true clean install -U

编译需要好几分钟
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  03:35 min
[INFO] Finished at: 2024-10-24T11:27:32+08:00
[INFO] -------------------------------------------

$ cd distribution/target/rocketmq-5.3.1/rocketmq-5.3.1

[root@localhost rocketmq-5.3.1]# pwd
/usr/local/software/rocketmq-all-5.3.1-source-release/distribution/target/rocketmq-5.3.1/rocketmq-5.3.1
[root@localhost rocketmq-5.3.1]# ls
benchmark  bin  conf  lib  LICENSE  NOTICE  README.md

2 修改启动参数
2.1修改broker的运行脚本,内存不够可以适当的修改broker启动参数

[root@localhost bin]# pwd
/usr/local/software/rocketmq-all-5.3.1-source-release/distribution/target/rocketmq-5.3.1/rocketmq-5.3.1/bin

[root@localhost bin]# vim runbroker.sh
ESC: set number 可以显示行数

找到如下参数:-server -Xms8g -Xmx8g 

看着改,只要能启动就行
改成 -server -Xms2g -Xmx2g
改成-server -Xms1g -Xmx1g 
改成-server -Xms256m -Xmx256m

101 choose_gc_log_directory
103 JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"

2.2 修改nameServer的运行脚本, 修改89和94行-server -Xms4g -Xmx4g -Xmn2g
看着改,只要能启动就行
改成-server -Xms1g -Xmx1g -Xmn512m
改成-server -Xms2g -Xmx2g -Xmn1g
改成-server -Xms256m -Xmx256m -Xmn128m

 89       JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
 90       JAVA_OPT="${JAVA_OPT} -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabl    ed -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:-UseParNewGC"
 91       JAVA_OPT="${JAVA_OPT} -verbose:gc -Xloggc:${GC_LOG_DIR}/rmq_srv_gc_%p_%t.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps"
 92       JAVA_OPT="${JAVA_OPT} -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=30m"
 93     else
 94       JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

2.3 修改代理的端口默认是8080和8081修改成9080和9081,要不然8080可能会和tomcat的端口冲突
[root@localhost conf]# vi rmq-proxy.json
{
  "rocketMQClusterName": "DefaultCluster",
  "remotingListenPort": 9080,
  "grpcServerPort": 9081
}

3 修改broker的配置文件,设置可以自动创建主题。
进入conf目录下,修改broker.conf文件

[root@localhost conf]# pwd
/usr/local/software/rocketmq-all-5.3.1-source-release/distribution/target/rocketmq-5.3.1/rocketmq-5.3.1/conf

[root@localhost conf]# vim broker.conf
autoCreateTopicEnable=true

autoCreateTopicEnable:自动创建主题,不然需要手动创建出来
namesrvAddr:nameSrv地址可以写localhost因为nameSrv和broker在一个服务器,也可以用参数指定

4 创建日志目录
/usr/local/software/rocketmq-all-5.3.1-source-release/distribution/target/rocketmq-5.3.1/rocketmq-5.3.1/
mkdir logs

5 启动NameServer

 后台模式启动,进入到bin目录,执行如下命令,如果不想后台启动的话就进入bin目录后./mynamesrv
/usr/local/software/rocketmq-all-5.3.1-source-release/distribution/target/rocketmq-5.3.1/rocketmq-5.3.1/

5.1 需要先启动Name Server
nohup sh bin/mqnamesrv > ./logs/namesrv.log &

#!/bin/bash
nohup sh bin/mqnamesrv > ./logs/namesrv.log &
nohup sh bin/mqbroker -c  conf/broker.conf -n 192.168.150.50:9876 --enable-proxy> ./logs/broker.log&
exit 0

[root@localhost rocketmq-5.3.1]# nohup sh bin/mqnamesrv > ./logs/namesrv.log &

5.2 查看日志
[root@localhost rocketmq-5.3.1]# cat logs/namesrv.log

Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release
Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release.
The Name Server boot success. serializeType=JSON, address 0.0.0.0:9876

6、启动Broker+Proxy
NameServer成功启动后,我们启动Broker和Proxy。这里我们使用 Local 模式部署,即 Broker 和 Proxy 同进程部署
进入到bin目录

先启动broker
nohup sh bin/mqbroker -c  conf/broker.conf -n 192.168.150.50:9876 --enable-proxy> ./logs/broker.log&

[root@localhost rocketmq-5.3.1]# nohup sh bin/mqbroker -c  conf/broker.conf -n 192.168.150.50:9876 --enable-proxy> ./logs/broker.log&

也可以指定配置文件-c  conf/broker.conf,用-pc conf/proxyConfig.json来改默认占用的8080和8081端口,改端口看下面的备注。 nohup bin/mqbroker -n 127.0.0.1:9876 -pc conf/proxyConfig.json --enable-proxy &

nohup sh bin/mqbroker -c  conf/broker.conf -n 192.168.150.50:9876 --enable-proxy> ./logs/broker.log&
[root@localhost logs]# cat broker.log
Thu Oct 24 15:17:52 CST 2024 rocketmq-proxy startup successfully

http://localhost:9999/rocketmq/send

[root@localhost logs]# cat broker.log
Unrecognized VM option 'UseBiasedLocking'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

Jdk21偏向锁被废弃了,移除这个VM参数
打开rocketmq 的/bin/runbroker.sh,移除UseBiasedLocking参数。

JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages -XX:-UseBiasedLocking"



或许出现的其他问题
RocketMQ连接异常sendDefaultImpl call timeout

装并启动好RocketMQ后,在代码中远程连接RocketMQ,报以下错误:

org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException:sendDefaultImpl call timeout at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.sendDefaultImpl(DefaultMQProducerImpl.java:588)at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1223)at org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl.send(DefaultMQProducerImpl.java:1173)at org.apache.rocketmq.client.producer.DefaultMQProducer.send(DefaultMQProducer.java:214)at com.flying.demo.Producer.main(Producer.java:25)

这个错误其实是启动RocketMQ的namesrv,broker没有指IP。
假如IP是:192.168.1.135
那么启动namesrv时,用以下方法:
nohup sh bin/mqnamesrv -n "192.168.1.135:9876" &
启动broker时,用以下方法:
修改conf/broker.conf,加入:brokerIP1=192.168.1.135
启动:nohup ./bin/mqbroker -n localhost:9876 -c conf/broker.conf autoCreateTopicEnable=true &


备注:启动失败如果是8080端口已经绑定可以修改端口 ========================

RocketMQ5.0.0 版本增加了 Proxy 模块,启动时默认会用到 8081 端口,当端口被占用时,broker/proxy 将无法启动,修改 proxy 端口方法如下:

(1)在 conf 目录下修改rmq-proxy.json 文件,注意文件格式为 json,所以内容须为 json 格式;

 private int remotingListenPort = 8080;
 private Integer grpcServerPort = 8081;

{
      // 代理监听端口
     "remotingListenPort": 9080,
     // gRPC服务器端口
    "grpcServerPort": 9081,
    // 对应namesr的ip,这个单机的时候可以不用加,集群的没测试过
    "namesrvAddr":"123.45.67.891:6789;198.76.54.321:6789"
}

修改代理的端口默认是8080和8081
[root@localhost conf]# vi rmq-proxy.json
{
  "rocketMQClusterName": "DefaultCluster",
  "remotingListenPort": 9080,
  "grpcServerPort": 9081
}


=================================================================

7. 关闭服务器和开机自启
进入到/usr/local/software/rocketmq-all-5.3.1-source-release/distribution/target/rocketmq-5.3.1/rocketmq-5.3.1/目录执行

sh bin/mqshutdown namesrv
sh bin/mqshutdown broker

8 使用代码测试

[root@localhost bin]# sh mqadmin updateTopic -n 192.168.150.50:9876 -b 192.168.150.50:10911 -t MyTopic -w 4 -r 4

create topic to 192.168.150.50:10911 success.
TopicConfig [topicName=MyTopic, readQueueNums=4, writeQueueNums=4, perm=RW-, topicFilterType=SINGLE_TAG, topicSysFlag=0, order=false, attributes={}]

-n 192.168.150.50:9876:Name Server地址。
-b 192.168.150.50:10911:Broker地址。
-t MyTopic:主题名称。
-w 4:写队列数量。
-r 4:读队列数量。

下面的内容还没测试到

9 测试
在进行工具测试消息收发之前,我们需要告诉客户端NameServer的地址,RocketMQ有多种方式在客户端中设置NameServer地址,这里我们利用环境变量NAMESRV_ADDR
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

10 在rocketmq-dashboard查看消息,也可以直接用程序测试

1. docker 镜像安装
① 安装docker,拉取 rocketmq-dashboard 镜像
docker pull apacherocketmq/rocketmq-dashboard:latest

② docker 容器中运行 rocketmq-dashboard
docker run -d --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.150.50:9876" -p 9999:9999 -t apacherocketmq/rocketmq-dashboard:latest

进入容器内部
docker exec -it 05ac89fbf3dd /bin/bash
docker cp 05ac89fbf3dd:/rocketmq-dashboard.jar /

=============================================================================================

2 rocketmq-dashboard的使用
https://rocketmq.apache.org/zh/docs/deploymentOperations/04Dashboard

http://192.168.150.50:8001

网站公告

今日签到

点亮在社区的每一天
去签到