官网下载:下载链接
根据需要下载自己需要的版本、本文使用下载的是:4.7.0版本
创建目录,使用ftp工具上传下载的包到上面创建的目录下。
cd /usr/local
mkdir rocketmq-all-4.7.0
注意:rocketmq 需要 Linux 上安装JDK,版本 1.8 以上,如果你 Linux 上已经配置了 Java 环境可跳过,未安装请自行安装。
上传之后进行解压:
unzip rocketmq-all-4.7.0-bin-release.zip
解压后目录结构
benchmark:这里面就是一些可以直接运行,进行测试的 sh 文件
bean:该目录是比较常用的,里面是一些可执行文件
conf:这里面就是一些配置文件
lib:就是 mq 所依赖的第三方 jar 包
进入 bin 目录 cd bin/
nohup ./mqnamesrv &
或者
nohup sh bin/mqnamesrv &
查看日志
tail -f ~/logs/rocketmqlogs/namesrv.log
#出现下面信息成功
The Name Server boot success...
在启动之前先修改两个配置:
cd bin
vim runserver.sh
mq 默认需要的内存是比较大的,根据自己 Linux 的内存大小去设置,我这里就改成 256 256 128 了
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
cd bin
vim runserver.sh
调整小点
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
注意:这里很坑爹
安装rocketMQ的server后,启动一切正常,但是使用客户端连接时报错、很纳闷这个172.17.42.1
是从哪里来的。
Caused by: org.apache.rocketmq.remoting.exception.RemotingConnectException: connect to <172.17.42.1:10911> failed
检查服务器上,这个ip是docker0的虚拟网卡的网关,但是启动rocketMQ时并没有设置这个ip,检查broker.conf和其他配置文件没有发现可以配置ip地址的地方,官方文档里也没有说明。重新编译并没有解决问题,于是把docker网卡停掉,连接还是报同样的错。
因为broker部署在虚拟机,并且虚拟双网卡,client无法正常连接服务端(不是部署到虚拟机的可能不会遇到这个问题、等遇到这个问题在解决)
解决办法:修改broker.conf配置文件添加IP、在conf文件中加入两行(建议直接复制,然后再修改为自己的IP),一定是大写IP!!!!!
namesrvAddr = 127.0.0.1:9876
brokerIP1 = 192.168.232.143
启动Broker
nohup ./mqbroker -n localhost:9876 ../conf/broker.conf &
查看日志
tail -f ~/logs/rocketmqlogs/broker.log
看到下面信息代表成功
The broker[%s, 172.30.30.233:10911] boot success...
注意:不要把打印日志的这个窗口关闭、窗口关闭进程结束了
新开开了两个窗口,都在 mq 的 bin 目录下,一个用于发送消息,一个用于接收消息。
# 声明一个 namesrv 的地址
export NAMESRV_ADDR=localhost:9876
# 发送消息
./tools.sh org.apache.rocketmq.example.quickstart.Producer
# 出现下面信息成功发送
SendResult [sendStatus=SEND_OK, msgId= ...
接收消息:
# 声明一个 namesrv 的地址
export NAMESRV_ADDR=localhost:9876
# 发送消息
./tools.sh org.apache.rocketmq.example.quickstart.Consumer
# 出现下面信息成功消费
ConsumeMessageThread_%d Receive New Messages: [MessageExt...
下载源码:链接
修改配置信息:进入到解压的文件夹下修改 application.yml 文件,根据情况修改,注意端口冲突问题。
编译源代码、输入cmd进入到目录下(maven已经按照配置完成)
mvn clean package -Dmaven.test.skip=true
如果打包中报错:
[ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.11.3:install-node-and-yarn (install node and yarn) on project rocketmq-dashboard: Could not download Yarn: Could not download https://github.com/yarnpkg/yarn/releases/download/v1.22.10/yarn-v1.22.10.tar.gz: Connect to github.com:443 [github.com/20.205.243.166] failed: Connection timed out: connect -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
访问
https://github.com/yarnpkg/yarn/releases/download/v1.22.10/yarn-v1.22.10.tar.gz
手动下载、下载完成后找到maven配置的仓库地址下面的\com\github\eirslett\yarn\1.22.10、手动放进去。如果目录不存在手动创建。
cd /usr/local/rocketmq-all-4.7.0
#创建目录存放编译好的控制台jar包
mkdir rocketmq-console
cd /usr/local/rocketmq-all-4.7.0/rocketmq-console
#启动jar包
java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar
浏览器访问:注意打包编译源码之前配置文件自己修改的是什么这里端口就是什么。
这里没有设置账号密码、可以直接访问。
修改下载的源码的配置文件
打开密码配置文件
默认users.properties配置如下,需要修改用户名和密码
# Define Admin
admin=admin,1
# Define Users
user1=user1
user2=user2
配置用户名和密码
# Define Admin
admin=新密码,1
# Define Users
用户名=新密码
修改配置之后、需要重新编译打包、在上传到服务器对应目录下。
账号admin密码123456
启动脚本:NameServer、Broker、console全部启动
vim startMq.sh
#!/bin/bash
rocketmq_path="/usr/local/rocketmq-all-4.7.0/rocketmq-all-4.7.0-bin-release"
dashboard_path="/usr/local/rocketmq-all-4.7.0/rocketmq-console/rocketmq-dashboard-1.0.1-SNAPSHOT.jar"
function log_info() {
echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] $@"
}
function log_error() {
echo "$(date '+%Y-%m-%d %H:%M:%S') [ERROR] $@" >&2
}
# 启动 mqnamesrv
nohup sh "$rocketmq_path/bin/mqnamesrv" > /dev/null 2>&1 &
log_info "Starting mqnamesrv..."
# 等待 mqnamesrv 启动完成
sleep 5
# 检查 mqnamesrv 是否成功启动
if ! pgrep -f "$rocketmq_path/bin/mqnamesrv" >/dev/null; then
log_error "Failed to start mqnamesrv."
exit 1
fi
log_info "mqnamesrv started successfully."
# 启动 mqbroker
nohup sh "$rocketmq_path/bin/mqbroker" -n localhost:9876 -c "$rocketmq_path/conf/broker.conf" > /dev/null 2>&1 &
log_info "Starting mqbroker..."
# 等待 mqbroker 启动完成
sleep 5
# 检查 mqbroker 是否成功启动
if ! pgrep -f "$rocketmq_path/bin/mqbroker" >/dev/null; then
log_error "Failed to start mqbroker."
exit 1
fi
log_info "mqbroker started successfully."
# 启动 RocketMQ Dashboard
nohup java -jar "$dashboard_path" > /dev/null 2>&1 &
log_info "mqconsole started successfully..."
# 如果需要,在此处添加其他逻辑和命令
exit 0
停止脚本:NameServer、Broker、console全部停止
vim stopMq.sh
#!/bin/bash
sh /usr/local/rocketmq-all-4.7.0/rocketmq-all-4.7.0-bin-release/bin/mqshutdown broker
sh /usr/local/rocketmq-all-4.7.0/rocketmq-all-4.7.0-bin-release/bin/mqshutdown namesrv
# 指定进程名称
process_name="java -jar /usr/local/rocketmq-all-4.7.0/rocketmq-console/rocketmq-dashboard-1.0.1-SNAPSHOT.jar"
# 查询进程是否存在
pid=$(pgrep -f "$process_name")
if [ -n "$pid" ]; then
echo "Process is running with PID: $pid"
echo "Attempting to stop the process..."
# 关闭进程
kill "$pid"
sleep 5 # 等待一段时间以确保进程已经停止
# 再次查询进程是否存在
pid=$(pgrep -f "$process_name")
if [ -n "$pid" ]; then
echo "Failed to stop the process."
else
echo "Process stopped successfully."
fi
else
echo "No console running."
fi