参考文档:
http://rocketmq.apache.org/docs/quick-start/
https://www.jianshu.com/p/824066d70da8
http://blog.51cto.com/yushiwh/2118625
https://www.cnblogs.com/quchunhui/p/7284752.html
nameserver默认使用9876端口,broker默认端口10911,vip通道端口号为10909,同时该broker会使用10910[mqadmin连接使用],10912端口[slave连接使用],在阿里云部署时需要开放这几个端口。
一、下载安装包
源码安装:https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.2.0/rocketmq-all-4.2.0-source-release.zip
二、安装
RocketMq需要安装jdk1.8。源码安装的话还需要maven和git,参考官方文档安装即可。
Binary安装直接下载安装包到/opt目录下,unzip命令解压 unzip rocketmq-all-4.2.0-bin-release.zip -d rocketmq-all-4.2.0
三、启动
解压之后cd到bin目录下,首先根据服务器配置来修改 runserver.sh 和 runbroker.sh 两个文件的jvm配置。
cd到rocketmq安装目录,创建logs文件夹,
启动namesrv
nohup sh bin/mqnamesrv > /opt/rocketmq-all-4.2.0/logs/mqnamesrv.log 2>&1 &
tailf /logs/mqnamesrv.log,出现 The Name Server boot success. serializeType=JSON表示启动namesrv成功
启动broker
nohup sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true >/opt/rocketmq-all-4.2.0/logs/broker.log 2>&1 &
(autoCreateTopicEnable=true 表示自动创建topic)
tailf /logs/broker.log
执行jps
namesrv和broker启动成功!
关闭服务器:
sh bin/mqshutdown broker //停止 broker
sh bin/mqshutdown namesrv //停止 nameserver
四、测试
发送消息:
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
五、添加开机自启动
切换到rocketMq的bin目录下,
1、拷贝play.sh到Start.sh,并修改Start.sh内容如下:
#!/bin/sh # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Name Server # #nohup sh mqnamesrv > ns.log 2>&1 & nohup sh /opt/rocketmq -all -4.2.0/bin/mqnamesrv >/opt/rocketmq -all -4.2.0/logs/mqnamesrv.log 2>&1 & # # Service Addr # ADDR=`hostname -i `:9876 # # Broker # #nohup sh mqbroker -n ${ADDR} > bk.log 2>&1 & nohup sh /opt/rocketmq -all -4.2.0/bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true >/opt/rocketmq -all -4.2.0/logs/broker.log 2>&1 & #sh broker.sh echo "Start Name Server and Broker Successfully, ${ADDR}" |
2.修改rc.local文件,vim /etc/rc.local
#!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advisable to create own systemd services or udev rules # to run scripts during boot instead of using this file. # # In contrast to previous versions due to parallel execution during boot # this script will NOT be run after all other services. # # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure # that this script will be executed during boot. touch /var/lock/subsys/local source /etc/profile su -c 'cd && /opt/rocketmq-all-4.2.0/bin/Start.sh' |
3.查看Start.sh 和rc.local的权限,看是否可执行,如果不是的话添加可执行权限
chomd +x /opt/rocketmq-all-4.2.0/bin/Start.sh
4.重启服务器,使用jps查看是否已经启动,如果没有检查下脚本是否正确