本文正在参加「金石计划 . 瓜分6万现金大奖」
RocketMQ 教程
Apache RocketMQ 是一个分布式消息中间件和流处理平台,具备低延迟,高性能, 可靠性,万亿级消息处理容量以及灵活可扩展等特性。
RocketMQ 历史
- 2011 年,阿里巴巴中间件团队自主研发了 RocketMQ 消息中间件, 采用 Java 语言开发;
- 2016 年,RocketMQ 被阿里开源,并捐赠给 Apache 基金会, 开始进入孵化阶段;
- 2017 年 9 月 25 日,Apache 软件基金会正式宣布,RocketMQ 成为孵化为 Apache 顶级项目,也是国内首个互联网中间件在 Apache 上的顶级项目,同时也是继 ActiveMQ, Kafka 之后,分布式消息中间件新成员;
RocketMQ 使用情况
在阿里内部,RocketMQ 服务了集团成千上万个服务,其中包括淘宝,支付宝,天猫商城等,同时,在每年双十一当天,有超过万亿级消息通过 RocketMQ 来流转,可以说它的地位举足轻重。
自从 RocketMQ 被开源,目前已有数千家大中型公司用于生产环境。
本节中,您将学习 RocketMQ 的下载与安装。
RocketMQ 下载
打开 RocketMQ 官方文档, 我们选择已编译的版本下载,省去 Maven 编译的过程:
选择 Http 协议,随意点击一个进行下载。
Linux 环境 RocketMQ 安装
下载完成后,上传到 Linux 服务器您的安装目录,进行解压,命令如下:
unzip rocketmq-all-4.4.0-bin-release.zip
进入解压后的目录:
cd rocketmq-all-4.4.0-bin-release
目录结构如下:
解压完成即代表 RocketMQ 安装完成了!
RocketMQ 目录
目录中文件说明:
-
LICENSE、NOTICE、README.md: 版权声明以及功能说明文件;
-
benchmark: 目录里包含 benchmark 程序相关 shell 脚本;
-
bin
: 包含各种 RocketMQ 的 shell 脚本 (Linux 环境) 和 cmd 脚本(Windows 平台),这些脚本包括:
- 启动 NameServer 的 mqnamesrc 脚本;
- 启动 Broker 的 mqbroker 脚本;
- 集群管理脚本 mqadmin;
- ......
-
conf
: 配置文件夹,包括:
- 三种方式的 broker 配置文件;
- logback 日志配置文件;
- ......
-
lib: 包含 RocketMQ 各个子模块编译成的 jar 包,以及其依赖的一些 jar 包,如:Netty, common-lang, FastJSON 等。
本节中,您将学习如何启动以及关闭单机版 RocketMQ。
开始
单机版 RocketMQ 启动非常简单,您无需做任何配置,仅仅需要依次启动 NameServer 和 Broker 即可。首先,让我们进入 RocketMQ 的安装目录。
一、启动 NameServer
后台启动 NameServer:
nohup sh bin/mqnamesrv &
查看 NameServer 启动日志:
tail -f ~/logs/rocketmqlogs/namesrv.log
启动成功的情况下,日志中会包含如下日志:
The Name Server boot success...
二、启动 Broker
后台启动 Broker:
sh bin/mqbroker -n localhost:9876 autoCreateTopicEnable=true &
autoCreateTopicEnable=true参数的意义为自动创建 Topic。
查看 Broker 启动日志:
tail -f ~/logs/rocketmqlogs/broker.log
启动成功的情况下,日志中会包含如下日志:
The broker[%s, 172.30.30.233:10911] boot success...
RocketMQ 发送与接收消息测试
NameServer 和 Broker 均启动成功后,让我们来测试一下,是否能够正常的发送与接收消息。我们通过 RocketMQ 自身 bin/tools.sh 脚本来做一个快速的测试,但是在那之前,需要设置一下 NAMESRV_ADDR 的环境变量 :
> export NAMESRV_ADDR=localhost:9876
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId= ...
> sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_%d Receive New Messages: [MessageExt...
若能正确打印上述日志,则表明单击版 RocketMQ 部署成功!
关闭 RocketMQ
您可以通过 bin/mqshutdown 脚本来关闭 NameServer 和 Broker:
> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK
> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK