RocketMQ简单介绍
RabbitMQ的底层是使用erlang语言编写的,不便分析其底层,RocketMQ作为原阿里下经历阿里双十一严格考验的中间件,同时也是使用我们熟悉的java语言编写,我们先把入门的基础必备了解透,然后在去分析源码,看看大佬是如何编写代码的。
下载和安装
通过RocketMQ的官网http://rocketmq.apache.org 直接将源码和运行包下载下来,目前最高版本为5.x版,5.x还在不断变化过程,同时是一个拥抱云原生的版本,更新非常多的新特性,目前使用公司以及稳定性来说都还不够,我们来分析4.9.5版本。
5.x版基本上接近于之前的阿里云推出的付费版本。
下载完之后的目录结构,RocketMQ的运行默认需要12G,但是我们去修改runserver.sh和runbroker.sh 的配置,这些都是java的jvm参数。
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -
XX:MaxMetaspaceSize=320m"
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g"
同时记得由于RocketMQ是java编写,所以我们需要安装jdk。
RocketMQ的后端服务分为nameserver和broker两个服务:
01启动nameserver
进入目录执行 nohup bin/mqnamesrv &,执行完后生成nohup.out日志文件,当出现success表示启动成功。
02启动broker
启动之前需要去broker.conf文件里面配置一个 autoCreateTopicEnable=true 参数,该参数表示允许broker端自动创建新的Topic,如果虚拟机存在多张网卡需要配置brokerP1属性。
进入目录执行 nohup bin/mqbroker & ,执行完后生成nohup.out日志文件,当出现success表示启动成功。
03停止服务
通过 mqshutdown namesrv | broker 去关闭对应的服务,不要强制使用kill 命令。
安装服务之后,我们还需要一个可视化界面,这个需要单独下载一个应用,然后通过jar启动才能访问到。
认识RocketMQ的各个组件
nameServer:该服务不依赖于任何其他的服务,自己独立就能启动,
不管是broker还是客户端,都需要明确指定nameServer的服务地址,nameServer可以理解为是整个RocketMQ的CPU,
整个RocketMQ集群都要在CPU的协调下才能正常⼯作。
broker:作为RocketMQ中最重要的,最繁琐的部分,提供消息存储,
传递,查询等功能,RockerMQ提供很多方式方法来保证broker的安全,
类似于电脑里面的硬盘或显卡之类的。
client:Client包括消息⽣产者和消息消费者,
简单理解就是生产消息和消费消息的。