介绍:
RocketMQ是阿里巴巴开源的一个消息中间件,在阿里内部历经了双十一等很多高并发场景的考验, 能够处理亿万级别的消息。2016年开源后捐赠给Apache,现在是Apache的一个顶级项目。 目前RocketMQ在阿里云上有一个购买即可用的商业版本,商业版本集成了阿里内部一些更深层次的 功能及运维定制。我们这里学习的是Apache的开源版本。开源版本相对于阿里云上的商业版本,功能 上略有缺失,但是大体上功能是一样的。
淘宝内部的交易系统使用了淘宝自主研发的 Notify 消息中间件,使用 Mysql 作为消息存储媒介,可 完全水平扩容,为了进一步降低成本,我们认为存储部分可以进一步优化,2011 年初,Linkin 开源 了 Kafka 这个优秀的消息中间件,淘宝中间件团队在对 Kafka 做过充分 Review 之后,Kafka 无限消 息堆积,高效的持久化速度吸引了我们,但是同时发现这个消息系统主要定位于日志传输,对于使用 在淘宝交易、订单、充值等场景下还有诸多特性不满足,为此我们重新用 Java 语言编写了 RocketMQ, 定位于非日志的可靠消息传输(日志场景也 OK),目前 RocketMQ 在阿里集团被广泛应用在订单,交易,充值,流计算,消息推送,日志流式处理,binglog 分发等场景。
RocketMQ的官网地址: http://rocketmq.apache.org ,github地址是 https://github.com/apache/rocketmq
RocketMQ运行版本下载地址:https://downloads.apache.org/rocketmq/4.9.3/rocketmq-all-4.9.3-bin-release.zip
RocketMQ源码版本下载地址:https://downloads.apache.org/rocketmq/4.9.3/rocketmq-all-4.9.3-source-release.zip
运行之前,我们需要对RocketMQ的组件结构有个大致的了解。
RocketMQ由以下这几个组件组成
NameServer : 提供轻量级的Broker路由服务。
Broker:实际处理消息存储、转发等服务的核心组件。
Producer:消息生产者集群。通常是业务系统中的一个功能模块。
Consumer:消息消费者集群。通常也是业务系统中的一个功能模块。
一个完整的RocketMQ集群中,有如下几个角色
Producer:消息的发送者;举例:发信者
Consumer:消息接收者;举例:收信者
Broker:暂存和传输消息;举例:邮局
NameServer:管理Broker;举例:各个邮局的管理机构
Topic:区分消息的种类;一个发送者可以发送消息给一个或者多个Topic;一个消息的接收者可以订阅一个或者多个Topic消息
快速安装单机版rocketmq:
1、准备jdk1.8的环境
2、上传rocketmq-all-4.9.3-bin-release.zip的压缩包,并进行解压
unzip rocketmq-all-4.9.3-bin-release.zip
3、配置rocketmq的环境变量(和jdk的在一起)
vi /etc/profile
环境变量配置如下:
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_221
export JRE_HOME= J