前言
最近做项目,boss要求将kafka切换为rocket mq,玩了一下rocketmq的动态切换。发现rocketmq能力还挺强大的,首先Windows下搭建一套环境。
1. 下载mq
访问apache的官网下载rocketmq,目前最新版本是4.5.1,下载bin版本。当然也可以下载source版本自己编译。
下载完后,解压缩
从lib的jar可以看出rocketmq是纯java开发的,貌似阿里主要使用java开发。
2. rocketmq架构图
可以看到rocketmq主要有name server与broker组成,与producer、consumer组成生产者,消费者。name server是无状态的元数据管理中心集群,用于替代zookeeper的作用。
2.1 准备
配置JAVA_HOME和ROCKETMQ_HOME
2.2 启动name server
执行cmd,cd到bin目录,执行mqnamesrv,然后?
由于使用CMS回收器,笔者因为JDK1.8下载需要登录,搞了一个JDK12,悲剧了
执行 mqnamesrv
linux同理,配置好JAVA_HOME即可,linux命令
nohup ./mqnamesrv &
2.3 执行broker
真正到存储消息的队列节点了,启动broker,这里自动创建topic,又不是生产,没必要申请
mqbroker -n 127.0.0.1:9876 autoCreateTopicEnable=true
linux,报了内存不足
nohup ./mqbroker -n 127.0.0.1:9876 autoCreateTopicEnable=true &
居然要8G空间,我汗,我是2G虚拟机
设置一下吧,由于JDK8,需要配置元数据区meta
对runserver.sh 、runbroker.sh启动脚本中对于内存的限制,比如改成如下示例:
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn192m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
当然笔者比较拮据,机器好可以配置高点
Linux默认namesrv使用CMS收集器,分配4G
broker使用G1收集器,分配8G,笔者做测试都分配512M,其实namesrv可以配置低一点,比如256M;broker分配高一些,因为broker负载重,当然做测试就无所谓了,随时可以调整。
修改后启动成功
3. rocketmq console
rocketmq有开源的管理端:https://github.com/apache/rocketmq-externals,支持很多功能,最常用的是console
打开rocketmq-console,配置好name server,元数据集群有broker的信息,producer与consumer也是这里获取的。
执行后,访问:http:localhost:8180/
还支持中文,良心
总结
搭建rocketmq很简单,可以看出rocketmq的设计从很多方面延用了kafka的设计。下一章讲架构设计与kafka的区别,实战api。api集成spring boot使用