去年11月份阿里的rocketMq进入了apache的开源孵化阶段,这个是借鉴的kafa,11年移植过来的java版本,经过淘宝这些年的不断改进,功能已经非常强大;作为技术人员是必须要学习掌握的,今天与同事一起下载安装运行了一下,发现要真想跑起来中间踩了不少坑,不是那么一帆风顺,为了节省后续大家的时间,在这里总结一下;按照这个步骤一定可以跑起来
下载编译
下载编译
git 地址https://github.com/apache/incubator-rocketmq;
下载release-4.0.0-incubating版本
下载到源码包后解压,进入到源码目录 ,执行maven命令编译打包(maven没有配置过自己去百度):
mvn -Dmaven.test.skip=true clean package install assembly:assembly
-p release-all
-U
注意 -p release-all 参数一定要添加
编译后在target目录下
,apache-rocketmq-all目录就是包含了所有内容 ,
apache-rocketmq-all.tar.gz 是它的压缩包;
然后将apache-rocketmq-all.tar.gz,拷贝到linux系统下解压运行;
启动
解压后的目录结构如下:
[root@jenkins apache-rocketmq-all]# ll
总用量 44
drwxr-xr-x 2 root root 4096 3月 9 15:16 benchmark
drwxr-xr-x 2 root root 4096 3月 9 16:41 bin
drwxr-xr-x 5 root root 4096 3月 9 16:42 conf
-rw-r--r-- 1 root root 525 3月 9 15:16 DISCLAIMER
drwxr-xr-x 2 root root 4096 3月 9 15:16 lib
-rw-r--r-- 1 root root 16129 3月 9 15:16 LICENSE
-rw-r--r-- 1 root root 1385 3月 9 15:16 NOTICE
-rw-r--r-- 1 root root 2362 3月 9 15:16 README.md
进入bin目录下启动脚本
[root@jenkins apache-rocketmq-all]# cd bin
[root@jenkins bin]# ll
总用量 100
-rwxr--r-- 1 root root 1654 3月 9 15:38 cachedog.sh
-rwxr--r-- 1 root root 845 3月 9 15:38 cleancache.sh
-rwxr--r-- 1 root root 1116 3月 9 15:38 cleancache.v1.sh
-rw-r--r-- 1 root root 1398 3月 9 15:38 mqadmin
-rw-r--r-- 1 root root 1344 3月 9 15:38 mqadmin.xml
-rw-r--r-- 1 root root 1394 3月 9 15:38 mqbroker
-rw-r--r-- 1 root root 1373 3月 9 15:38 mqbroker.numanode0
-rw-r--r-- 1 root root 1373 3月 9 15:38 mqbroker.numanode1
-rw-r--r-- 1 root root 1373 3月 9 15:38 mqbroker.numanode2
-rw-r--r-- 1 root root 1373 3月 9 15:38 mqbroker.numanode3
-rw-r--r-- 1 root root 1336 3月 9 15:38 mqbroker.xml
-rw-r--r-- 1 root root 1400 3月 9 15:38 mqfiltersrv
-rw-r--r-- 1 root root 1342 3月 9 15:38 mqfiltersrv.xml
-rwxr--r-- 1 root root 1396 3月 9 15:38 mqnamesrv
-rw-r--r-- 1 root root 1338 3月 9 15:38 mqnamesrv.xml
-rw-r--r-- 1 root root 1571 3月 9 15:38 mqshutdown
-rw------- 1 root root 866 3月 9 15:39 nohup.out
-rwxr--r-- 1 root root 2214 3月 9 15:38 os.sh
-rwxr--r-- 1 root root 1008 3月 9 15:38 play.sh
-rw-r--r-- 1 root root 772 3月 9 15:38 README.md
-rwxr--r-- 1 root root 2828 3月 9 15:38 runbroker.sh
-rwxr--r-- 1 root root 2391 3月 9 15:38 runserver.sh
-rwxr--r-- 1 root root 1156 3月 9 15:38 setcache.sh
-rwxr--r-- 1 root root 1408 3月 9 15:38 startfsrv.sh
-rwxr--r-- 1 root root 1870 3月 9 15:38 tools.sh
我们要执行两个启动脚本,一个是启动nameserver提供路由功能的,一个是启动broker负责消息处理的;
执行启动脚本前,要将脚本中window的中文回车换行替换为linux下的回车换行符,否则运行脚本会出错
进入到bin目录下执行以下命令即可:
[root@jenkins bin]#
sed -i 's/\r//g' *
启动nameserver
nameserver不需要配置直接启动,执行以下命令
[root@jenkins bin]# nohup sh mqnamesrv &
这个脚本最终调用了runserver.sh脚本,里面配置了jvm启动参数如下
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:PermSize=128m -XX:MaxPermSize=320m"
默认监听端口为9876
启动broker
broker需要配置后才能启动
配置文件存储在conf目录下
drwxr-xr-x 2 root root 4096 3月 9 18:05 2m-2s-async
drwxr-xr-x 2 root root 4096 3月 9 18:07 2m-2s-sync
drwxr-xr-x 2 root root 4096 3月 9 17:26 2m-noslave
-rw-r--r-- 1 root root 1023 3月 9 17:24 broker.conf
-rw-r--r-- 1 root root 14235 3月 9 15:16 logback_broker.xml
-rw-r--r-- 1 root root 3825 3月 9 15:16 logback_filtersrv.xml
-rw-r--r-- 1 root root 3803 3月 9 15:16 logback_namesrv.xml
-rw-r--r-- 1 root root 3889 3月 9 15:16 logback_tools.xml
2m-2s-async 这个目录下的配置文件是主从异步的配置文件示例
2m-2s-sync
这个目录下的配置文件是主从同步的配置文件示例
2m-noslave 这个目录下的配置文件是没有从的配置文件示例
随便打开一个broker.conf配置文件,内容如下:
#nameserver,broker 的brokerClusterName相同说明他们是在一个集群下;
brokerClusterName=DefaultCluster
#broker的名称,如果是主从配置,主与从的配置文件这个参数名必须设置为相同的,然后通过brokerId来区分主从;
brokerName=broker-a
#来判断是主还是从,主必须是0,从为大于1的值;
brokerId=0
deleteWhen=04
fileReservedTime=48
#
broker的角色:1.
ASYNC_MASTER
异步复制的master;2.
SYNC_MASTER
同步双写的master,slave
brokerRole=ASYNC_MASTER
#刷盘:1.
ASYNC_FLUSH
异步刷磁盘,性能高 ;2.
SYNC_FLUSH同步刷磁盘,性能低
flushDiskType=ASYNC_FLUSH
#配置nameserver的ip,多个之间使用分号分隔;
namesrvAddr=192.168.2.246:9876;192.168.2.247:9876;
namesrvAddr是必须要配置的,配置好后启动broker;
[root@jenkins rocketmqlogs]# nohup sh mqbroker -c /var/opt/apache-rocketmq-all/conf/2m-2s-async/broker-a-s.properties &
-c 命令来指定配置文件的路径
运行日志
运行日志
运行起来后输出日志存放在
~/logs/rocketmqlogs/路径下
[root@jenkins rocketmqlogs]# cd ~/logs/rocketmqlogs/
[root@jenkins rocketmqlogs]# ll -t
总用量 1624
-rw-r--r-- 1 root root 17744 3月 9 20:42 namesrv.log
-rw-r--r-- 1 root root 1222480 3月 9 18:52 watermark.log
-rw-r--r-- 1 root root 121997 3月 9 18:51 broker.log
-rw-r--r-- 1 root root 246306 3月 9 18:51 store.log
-rw-r--r-- 1 root root 21977 3月 9 18:49 remoting.log
-rw-r--r-- 1 root root 0 3月 9 15:54 commercial.log
-rw-r--r-- 1 root root 0 3月 9 15:54 stats.log
-rw-r--r-- 1 root root 0 3月 9 15:54 lock.log
-rw-r--r-- 1 root root 0 3月 9 15:54 transaction.log
-rw-r--r-- 1 root root 0 3月 9 15:54 storeerror.log
-rw-r--r-- 1 root root 0 3月 9 15:54 protection.log
-rw-r--r-- 1 root root 0 3月 9 15:54 broker_default.log
-rw-r--r-- 1 root root 0 3月 9 15:39 namesrv_default.log
如果要修改日志存放路径,到conf目录下修改logback的配置即可;
到此为止broker就启动起来了;
到此为止broker就启动起来了;