01. RocketMQ编译安装


01. RocketMQ编译安装

介绍

RocketMQ是阿里推出的,现在是Apacha顶级项目。它有两个优势:

  1. 它服务在阿里内部体系里面,比方说用在淘宝里面,支撑了双十一,它的性能是极高的
  2. RocketMQ相比其它中间件,因为它是用Java开发的,所以它对Java程序员来说更加友好

其它中间件介绍

中间件名称 所用语言 是否支持JMS 优势
RocketMQ Java 不支持 阿里广泛使用,原生面向集群
ActiveMQ Java 支持 结构简单,小项目第一选择
Kafka Scala 未知 性能高
RabbitMQ Erlang 未知 性能高

主流的MQ有很多,比如ActiveMQ、RabbitMQ、RocketMQ、Kafka、ZeroMQ等。

之前阿里巴巴也是使用ActiveMQ,随着业务发展,ActiveMQ IO 模块出现瓶颈,后来阿里巴巴 通过一系列优化但是还是不能很好的解决,之后阿里巴巴把注意力放到了主流消息中间件kafka上面,但是kafka并不能满足他们的要求,尤其是低延迟和高可靠性。

所以RocketMQ是站在巨人的肩膀上(kafka)MetaQ的内核,又对其进行了优化让其更满足互联网公司的特点。它是纯Java开发,具有高吞吐量、高可用性、适合大规模分布式系统应用的特点。 RocketMQ目前在阿里集团被广泛应用于交易、充值、流计算、消息推送、日志流式处理、binglog分发等场景。

下载RocketMQ

各个版本的JDK需求说明

通过官网进行下载

官方网站

下面是当前官网的rocketmq下载地址

将下载好的zip放到linux服务器上面,然后进行解压

通过Github下载源码并编译

Github地址

将源码放到服务器上面,使用tar xvf rocketmq-rocketmq-all-4.9.2.tar.gz将源码进行解压。

编译之前先要确保本地服务器上面有maven软件,没有的话请自行百度进行安装,后续我再出相关的教程

进入到解压后的目录,然后使用mvn -Prelease-all -DskipTests clean install -U进行编译。这里说明一下这个命令的含义,-Prelease-all代表选择的profile是release-all-DskipTests代表跳过测试步骤,-U代表强制刷新本地仓库不存在release版和所有的snapshots版本(其实我也不懂是什么意思,我看这篇博客是这么解释的)

耐心等待源码编译完毕

进入distribution/target目录,将rocketmq-4.9.2移出来,这个目录里面就是我们需要的rocketmq的应用

运行rocketmq

rocketmq目录说明

进入到bin目录下面,最主要的是两个程序:mqbrokermqnamesrv

切换JDK版本

因为rocketmq对JDK版本有要求,如果忘记了JDK的安装路径,可以通过命令java -verbose来查询java的安装路径,这个命令最后就会显示出java的安装路径

想要切换JDK版本就是把/etc/profile下面的JAVA_HOME和PATH修改掉,然后用source /etc/profile使配置生效

对于CentOS进行安装的JDK,好像有alternatives方式来切换java版本,具体只能自行百度了

启动namesrv

编辑一下runserver.sh,搜索一下-Xms找到内存大小,把内存改小一点。如果不改的话执行后面的命令可能会报错内存不够

运行当前目录下面的./mqnamesrv,然后就能把这个程序启动起来了

这里说明一下,namesvr你可以把它想象成zookeeper、eureka、nacos,它就是一个注册中心,后面所有的broker(也就是实际干活的进程)都注册到它上面

启动broker

再开启一个窗口,编辑一下runbroker.sh,搜索一下-Xms找到内存大小,把内存改小一点。如果不改的话,默认启动要分配8G内存,几乎所有的机器都会报错内存不够

运行当前目录下面的./mqbroker -n localhost:9876,然后把broker启动起来,并让broker连接到namesvr上面。后面的-n localhost:9876必须制定,如果不指定,后面运行生产者脚本的时候会报错No route info of this topic: TopicTest

这里有可能会报错Failed to obtain the host name,配置一下/etc/hosts,将自己服务器的IP地址和机器名映射好

broker你可以想象成一个实际干活的人,它里面维护了很多个主题topic,每个主题topic也就是一个消息队列

运行生产者脚本

再开启一个窗口,修改一下tools.sh,在最后一句话前面增加export NAMESRV_ADDR=localhost:9876

这句话如果不加的话,执行后面的语句会报错connect to null failed

运行生产者脚本:./tools.sh org.apache.rocketmq.example.quickstart.Producer

运行消费者脚本

使用命令./tools.sh org.apache.rocketmq.example.quickstart.Consumer,就能把刚才生产的内容都消费掉

rocketmq-dashboard

rocketmq也有一个图形化的客户端,原来它是rocketmq-externals下面的一个子模块,现在单独成为了一个顶级项目,叫做rocketmq-dashboard,下载源码,进入目录,使用命令mvn clean package -Dmaven.test.skip=true进行编译

编译完毕之后,进入target目录,运行java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar

访问IP:8080打开控制台,刚打开的时候会发现一堆报错信息,没关系,切换到OPS选项卡,在NameServerAddressList下面输入IP:9876,然后按回车,再按UPDATE按钮,将NameServerAddress配置上去

如果不想很麻烦,每次启动的时候都配置NameServerAddress,可以运行cp ../src/main/resources/application.properties .,将application.properties文件拷贝到jar包所在的target目录,然后编辑这个application.properties文件,搜索rocketmq.config.namesrvAddr,将NameSrv地址配置上去,保存完毕文件,重启应用。

或者也可以使用java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar --rocketmq.config.namesrvAddr=IP:9876来启动应用

下面是RocketMQ-Dashboard里面各个项目的说明

项目 说明
OPS 配置NameServer地址
Dashboard 控制台,可以看到前十的Broker,Broker五分钟的趋势,前十的Topic,Topic五分钟的趋势
Cluster 集群
Topic 主题,主题包括:普通、重试、死信、系统
Consumer 消费者
Producer 生产者
Message 消息
DLQMessage 死信消息
MessageTrace 消息轨迹


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM