RocketMQ 教程

161 阅读3分钟

本文正在参加「金石计划 . 瓜分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 编译的过程:

RocketMQ 下载

RocketMQ 下载

RocketMQ 下载

选择 Http 协议,随意点击一个进行下载。

Linux 环境 RocketMQ 安装

下载完成后,上传到 Linux 服务器您的安装目录,进行解压,命令如下:

 unzip rocketmq-all-4.4.0-bin-release.zip

进入解压后的目录:

 cd rocketmq-all-4.4.0-bin-release

目录结构如下:

RocketMQ 目录结构

解压完成即代表 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 启动非常简单,您无需做任何配置,仅仅需要依次启动 NameServerBroker 即可。首先,让我们进入 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