一、环境:
centos7(2台虚拟机)
apache-maven-3.2.5(官网要求maven版本是3.2.x,否则编译rocketmq时会有问题)
rocketmq-all-4.4.0
jdk1.8.0_161
二、安装maven
设置jdk、maven环境变量 vim /etc/profile ,添加如下代码,然后 source /etc/profile
(此处省略安装步骤~)
export JAVA_HOME=/opt/jdk1.8.0_161 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar MAVEN_HOME=/opt/apache-maven-3.2.5 export MAVEN_HOME export PATH=${PATH}:${MAVEN_HOME}/bin
检查jdk、maven安装是否成功
[root@nameserver1 conf]# java -version java version "1.8.0_161" Java(TM) SE Runtime Environment (build 1.8.0_161-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)
[root@nameserver1 conf]# mvn -v Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-15T01:29:23+08:00) Maven home: /opt/apache-maven-3.2.5 Java version: 1.8.0_161, vendor: Oracle Corporation Java home: /opt/jdk1.8.0_161/jre Default locale: zh_CN, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-327.el7.x86_64", arch: "amd64", family: "unix"
三、 安装rocketmq
1、下载,解压文件: unzip rocketmq-all-4.4.0-source-release.zip,结果目录如下图
[root@nameserver2 opt]# ls
apache-maven-3.2.5 apache-maven-3.2.5-bin.tar.gz jdk1.8.0_161 rh rocketmq-all-4.4.0 rocketmq-all-4.4.0-source-release.zip
2、安装rocketmq
cd rocketmq-all-4.3.1 mvn -Prelease-all -DskipTests clean install -U
在执行最后一步的时候会去maven下载相关文件,境外网址下载比较慢。可以使用maven的国内镜像
修改maven的setting.xml文件
cd /opt/apache-maven-3.2.5/conf/ vim settings.xml
setting.xml
<mirrors> <!-- mirror | Specifies a repository mirror site to use instead of a given repository. The repository that | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. | <mirror> <id>mirrorId</id> <mirrorOf>repositoryId</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://my.repository.com/repo/path</url> </mirror> --> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors>
编译有点慢,成功后结果如下图
进到目录 cd distribution/target/apache-rocketmq
启动namesrv服务:nohup sh bin/mqnamesrv &
启动Broker:nohup sh bin/mqbroker -n localhost:9876 &
查看启动结果,通过进程、jps命令或者通过namesrv.log查看
四、测试
#发送消息
[root@nameserver1 apache-rocketmq]# export NAMESRV_ADDR=localhost:9876 [root@nameserver1 apache-rocketmq]# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer SendResult [sendStatus=SEND_OK, msgId=C0A8407B235F7D4991AD17087E7B00BB, offsetMsgId=C0A8407B00002A9F00000000000341C0, messageQueue=MessageQueue [topic=TopicTest, brokerName=nameserver1, queueId=1], queueOffset=296] #接收消息 [root@nameserver1 apache-rocketmq]# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer ConsumeMessageThread_17 Receive New Messages: [MessageExt [queueId=2, storeSize=180, queueOffset=276, sysFlag=0, bornTimestamp=1583378432308, bornHost=/192.168.64.123:38275, storeTimestamp=1583378432311, storeHost=/192.168.64.123:10911, msgId=C0A8407B00002A9F0000000000030764, commitLogOffset=198500, bodyCRC=124332375, reconsumeTimes=0, preparedTransactionOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=298, CONSUME_START_TIME=1583378851971, UNIQ_KEY=C0A8407B235F7D4991AD17087D340068, WAIT=true, TAGS=TagA}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 49, 48, 52], transactionId='null'}]]
五、问题
启动时没有9876进程或者namesrv.log、broker.log 说明启动失败了,查看nohup.out 发下提示 "Cannot allocate memory"
根据本机的内存,修改为合适大小即可
cd distribution/target/apache-rocketmq
vim bin/runserver.sh ## 原来的是 #JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" ## 修改成 JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx512m -Xmn512m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=640m"
vim bin/runbroker.sh
## 原来的是
#JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
## 修改成
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn125m"
补充一点bin的地址是 distribution/target/apache-rocketmq/bin