Linux安装rocketMQ
一、前置环境
JDK 1.8 64 位
Maven 3.2.x 及以上版本
Git
4G 以上可用内存
环境变量示例如下:
export MAVEN_HOME=/usr/local/maven/apache-maven-3.6.3
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_144
export PATH=$MAVEN_HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH二、安装rocketMQ
源码安装:将源码上传到 RocketMQ 目录后执行以下命令
mvn -Prelease-all -DskipTests clean install -U二进制安装:直接下载发行包并解压
wget http://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.4.0/rocketmq-all-4.4.0-bin-release.zip #解压 unzip rocketmq-all-4.4.0-bin-release.zip
三、启动rocketMQ
修改启动内存配置,编辑
bin目录下的runserver.sh和runbroker.sh:JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"进入
bin目录启动 NameServer:nohup sh mqnamesrv &如果不需要打印日志,可以使用:
nohup sh mqnamesrv >/dev/null 2>&1 &启动 Broker:
nohup sh mqbroker -n 127.0.0.1:9876 &如果不需要打印日志:
nohup sh mqbroker -n 127.0.0.1:9876 >/dev/null 2>&1 &如果机器存在多网卡,需要额外指定 brokerIP1。可以新增 /etc/broker.conf,并在配置文件中增加 brokerIP1=公网IP,然后使用以下命令启动:
nohup sh mqbroker -n 127.0.0.1:9876 -c /etc/broker.conf &四、关闭rocketMQ
- 关闭 NameServer:
sh mqshutdown namesrv - 关闭 Broker:
sh mqshutdown broker
五、验证消息
# 增加环境变量
export ROCKETMQ_HOME=/usr/local/rocketMQ/rocketmq-all-4.4.0-bin-release
export NAMESRV_ADDR=localhost:9876
cd /usr/local/rocketMQ/rocketmq-all-4.4.0-bin-release
# 发送消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
# 接收消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer六、查看日志
如果启用了日志输出,日志通常会写入 nohup.out,可以通过 tail -f nohup.out 实时查看。
七、设置开机自启
创建启动脚本:
vi /etc/init.d/rocketmq
脚本内容如下,具体路径请按实际环境调整:
#!/bin/sh
#
# rocketmq - this script starts and stops the rocketmq daemon
#
# chkconfig: 2345 99 01
#这里需要引入环境变量
source /etc/profile
ROCKETMQ_HOME=/usr/local/rocketMQ/rocketmq-all-4.4.0-bin-release
ROCKETMQ_BIN=${ROCKETMQ_HOME}/bin
ADDR=127.0.0.1:9876
LOG_DIR=${ROCKETMQ_HOME}/logs
NAMESERVER_LOG=${LOG_DIR}/namesrv.log
BROKER_LOG=${LOG_DIR}/broker.log
ROCKETMQ_CONSOL=/usr/local/rocketMQ/view
usage(){
echo "********************************************************"
echo "usage: sh server.sh [start|stop|restart]"
echo " *1, start * "
echo " *2, stop * "
echo " *3, restart * "
echo "********************************************************"
read -p "please input option:" option
case "$option" in
"1")
start;;
"2")
stop;;
"3")
restart;;
*)
usage;;
esac
}
if_exist(){
pid=`ps -ef | grep rocketmq-console-ng-1.0.1.jar | grep -v grep | awk '{print $2}' `
if [[ -z ${pid} ]]; then
return 1
else
return 0
fi
}
start() {
if [ ! -d ${LOG_DIR} ]; then
mkdir ${LOG_DIR}
fi
cd ${ROCKETMQ_BIN}
nohup sh mqnamesrv >${NAMESERVER_LOG} 2>&1 &
echo "The Name Server boot success..."
nohup sh mqbroker -n ${ADDR} autoCreateTopicEnable=true >${BROKER_LOG} 2>&1 &
echo "The broker[%s, ${ADDR}] boot success..."
cd ${ROCKETMQ_CONSOL}
nohup java -jar rocketmq-console-ng-1.0.1.jar >/dev/null &
sleep 5
echo "The rocketmq-console-ng-1.0.1.jar in running "
}
stop() {
cd ${ROCKETMQ_BIN}
sh mqshutdown broker
sleep 1
sh mqshutdown namesrv
if_exist
if [[ $? -eq "0" ]]; then
for (( i = 0; i < 10; i++ )); do
if_exist
if [[ $? -eq "0" ]]; then
kill -9 $pid
echo "rocketmq-console-ng-1.0.1.jar is stop"
else
break
fi
done
else
echo "rocketmq-console-ng-1.0.1.jar is not running"
fi
}
restart() {
stop
sleep 2
start
}
case "$1" in
"start")
start
;;
"stop")
stop
;;
"restart")
restart
;;
*)
usage;;
esac授权:
chmod a+x /etc/init.d/rocketmq
chkconfig --add rocketmq
#查看是否出现rocketmq,出现则代表加入成功了,只是添加服务
chkconfig --list
#设置开机自启
chkconfig rocketmq on
#查看是否设置成功
chkconfig --list
启动:service rocketmq start
关闭:service rocketmq stop
重启:service rocketmq restart
jps 查看是否有进程八、rocketMQ生产者常见配置
生产者常见核心配置,broker.conf
compressMsgBodyOverHowmuch :消息超过默认字节4096后进行压缩
retryTimesWhenSendFailed : 失败重发次数
maxMessageSize : 最大消息配置,默认128k
topicQueueNums : 主题下面的队列数量,默认是4
autoCreateTopicEnable : 是否自动创建主题Topic, 开发建议为true,生产要为false
defaultTopicQueueNums : 自动创建服务器不存在的topic,默认创建的队列数
autoCreateSubscriptionGroup: 是否允许 Broker 自动创建订阅组,建议线下开发开启,线上关闭
brokerClusterName : 集群名称
brokerId : 0表示Master主节点 大于0表示从节点
brokerIP1 : Broker服务地址
brokerRole : broker角色 ASYNC_MASTER/ SYNC_MASTER/ SLAVE
deleteWhen : 每天执行删除过期文件的时间,默认每天凌晨4点
flushDiskType :刷盘策略, 默认为 ASYNC_FLUSH(异步刷盘), 另外是SYNC_FLUSH(同步刷盘)
listenPort : Broker监听的端口号
mapedFileSizeCommitLog : 单个conmmitlog文件大小,默认是1GB
mapedFileSizeConsumeQueue:ConsumeQueue每个文件默认存30W条,可以根据项目调整
storePathRootDir : 存储消息以及一些配置信息的根目录 默认为用户的 ${HOME}/store
storePathCommitLog:commitlog存储目录默认为${storePathRootDir}/commitlog
storePathIndex: 消息索引存储路径
syncFlushTimeout : 同步刷盘超时时间
diskMaxUsedSpaceRatio : 检测可用的磁盘空间大小,超过后会写入报错
九、安装可视化控制台
先修改配置文件可以直接编译运行。修改编译后的文件再运行,不修改项目文件。
- git地址
https://github.com/apache/rocketmq-externals,下载地址https://github.com/apache/rocketmq-externals.git,去git上查看,如果安装了git,通过git命令克隆下来。
git clone 地址或者通过git可视化工具拉取下来。
默认端口号为8080,为了保证不让端口冲突,需要先修改默认端口号,在项目rocketmq-console子项目下的src/main/resources/application.properties路径下,修改rocketmq.config.namesrvAddr=192.168.0.101:9876
进入到控制台项目rocketmq-console,编译打包 mvn clean package -Dmaven.test.skip=true
cmd进入到target目录,通过java -jar的方式运行生成的jar包
如果是linux服务器,把包放到指定视图路径,修改脚本文件指定路径。
