您的位置:首页 > 其它

2.偏头痛杨的rocketmq4.x入门之安装&启动篇

2017-09-28 15:48 246 查看
前戏
rocketmq的基本概念我们都已经知道了,下面开始来安装吧,本文全部是在linux环境下。
安装rocketmq有两种方式获取rocketmq的源码包。
第一种是在linux下安装git,通过git命令获取rocketmq的源码包。
第二种是通过rocketmq在github的主页中去下载源码包。
本人倾向于第二种,因为之前使用第一种方式会出现一些灵异事件,例如无缘无故丢消息等问题。。。

前置步骤
64位linux系统+jdk1.8(必须要jdk,而不是jre,因为jre没有编译器)+maven3.2.x+git(第二种安装方式则不需要)
这些安装方式超级无敌简单,可以自行百度,此处不再赘述。
注意不要忘了设置JAVA_HOME环境变量。

获取源码包
我们需要把rocketmq的代码下载到本地,然后通过maven进行构建,最后运行。
在这里区分两种方式:

第一种方式:从git上拉rocketmq的代码

cd /opt
git clone https://github.com/apache/incubator-rocketmq.git
注意:
官网写的是:git clone -b develop https://github.com/apache/incubator-rocketmq.git, 从dev分支拉代码未免有点不牢靠。
那我们从其他的分支里拿,例如:
git clone -b release-4.1.0-incubating https://github.com/apache/incubator-rocketmq.git
也可以从master分支中拿,那就是默认不写分支,例如:
git clone https://github.com/apache/incubator-rocketmq.git

第二种方式:从rocketmq的github上下载release版本
进入https://github.com/apache/incubator-rocketmq,点击"releases",下载相应的源码包。
例如:incubator-rocketmq-rocketmq-all-4.1.0-incubating.tar.gz
下载后我们需要将上传到服务器中(例如/opt目录),并解压。
tar xvf /opt/incubator-rocketmq-rocketmq-all-4.1.0-incubating.tar.gz-C /opt/yang
为了后面两种方式的命令相同,我把文件夹名字改一下。
mv incubator-rocketmq-rocketmq-all-4.1.0-incubating incubator-rocketmq
注意:客户端与服务端的版本需要一致,减少bug。例如客户端与服务端都使用4.1.0。

构建
当我们获得了源码包后,这些包里都是java源文件,我们需要class文件运行在jvm上,此时我们需要maven来去做编译。
注意:不要在windows上做这件事,然后自作聪明的把编译好的文件拖到linux上,会有编码问题。

cd /opt/incubator-rocketmq
mvn -Prelease-all -DskipTests clean install -U

授权命令
为了更方便的使用命令,我们需要把常见的rocketmq命令都授权一下。

cd /opt/incubator-rocketmq/distribution/target/apache-rocketmq/bin
chmod +x mqadmin mqbroker mqfiltersrv mqshutdown mqnamesrv

设置环境变量
其实不设置环境变量也可以,但是我们为了进一步简化后续的broker集群命令,所以还是设置一下吧。

配置rocketmq的环境变量
vi /etc/profile

在结尾添加
export ROCKETMQ_HOME=/opt/incubator-rocketmq/distribution/target/apache-rocketmq
export PATH=$JAVA_HOME/bin:$ROCKETMQ_HOME/bin:$PATH

按esc+!wq保存

使rocketmq的配置生效
source /etc/profile

启动Name Server
注意:启动前需要设置name server的jvm参数,默认堆内存耗费4g,内存设置不合理会导致异常情况发生。
需要设置默认内存。

vi /opt/incubator-rocketmq/distribution/target/apache-rocketmq/bin/runserver.sh
找到这句,然后改成你想要的参数。
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=64m -XX:MaxPermSize=160m"
按esc+!wq保存

启动name server
nohup sh mqnamesrv &
查看日志
tail -f /root/logs/rocketmqlogs/namesrv.log
关闭name server
nohup sh mqshutdown namesrv
name server启动好后,端口默认为9876

启动Broker(非集群,集群模式会在后面文章讲解)

注意:启动前需要设置broker的jvm参数,默认堆内存耗费8g,内存设置不合理会导致异常情况发生。
需要设置默认内存:

vi /opt/incubator-rocketmq/distribution/target/apache-rocketmq/bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"

启动broker
nohup sh mqbroker -n localhost:9876 &

查看日志
tail -f /root/logs/rocketmqlogs/broker.log

关闭broker(不会马上关闭,大概有10秒左右的延迟。不要使用kill来关闭broker,会造成消息丢失。)
nohup sh mqshutdown broker

测试
执行项目中默认的测试例子:生产者&消费者

export NAMESRV_ADDR=localhost:9876

sh $ROCKETMQ_HOME/bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
sh $ROCKETMQ_HOME/bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

如果看到一堆消息在屏幕上飞,又没有报错的话,那么恭喜你,环境搭建成功。

总结
实话实说,rocketmq的坑还是比我想象中的要多的多,稍微一不小心就会进坑,例如git分支那块,
到底选择哪个分支,选不好就会有bug出现。我遇到过最严重的bug就是生产者生产消息成功,
但队列中找不到,消费也消费不到,消息丢了。。。
个人还是建议使用第二种方式去下载源码包而不是用git选分支的方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: