RocketMQ:快速入门

RocketMQ是阿里巴巴2016年MQ中间件,使用Java语言开发。在阿里内部,RocketMQ承接了例如“双11”等高并发场景的消息流转,能够处理万亿级别的消息。今天我们将安装RocketMQ,并简单的使用入门案例体会一下RocketMQ。

1. 准备工作

1.1 下载RocketMQ

毋庸置疑的,首先我们要下载RocketMQ,RocketMQ当前最新版本:4.7.0,本次我们使用的是4.4.0这个版本。

官网地址:http://rocketmq.apache.org/

1.2 环境要求

  • Linux64位系统
  • JDK1.8+(64位)

2. 安装RocketMQ

2.1 安装步骤

以二进制包安装RocketMQ的方式很简单,只需要将下载好的二进制包解压到系统的某个文件夹下即可。

RocketMQ:快速入门_第1张图片

3. 启动RocketMQ

启动之前,我们需要修改一下JVM的参数。因为默认情况下,RocketMQ使用的是生产环境的配置,JVM的内存相关配置会非常的大,通常会因为内存不足导致Broker启动失败。

  • 修改runbroker.sh
vim runbroker.sh

# 修改前
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
# 修改后
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn128m"
  • 修改runserver.sh
vim runserver.sh

# 修改前
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
# 修改后
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

现在可以正式启动RocketMQ了。

3.1 启动NameServer

# 1.启动nameserver(默认端口:9876)
nohup sh bin/mqnamesrv &
# 2.查看启动日志
tail -f ~/logs/rocketmqlogs/namesrv.log

RocketMQ:快速入门_第2张图片

3.2 启动Broker

# 1.启动broker(通过-n指定nameserver的ip:port)
nohup sh bin/mqbroker -n localhost:9876 &
# 2.查看启动日志
tail -f ~/logs/rocketmqlogs/broker.log

RocketMQ:快速入门_第3张图片

4. 测试RocketMQ

测试程序我们将直接使用官方自带的消息生产者和消息消费者程序。

4.1 发送消息

# 1.设置环境变量
export NAMESRV_ADDR=localhost:9876
# 2.使用安装包的Demo发送消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

4.2 接收消息

# 1.设置环境变量
export NAMESRV_ADDR=localhost:9876
# 2.接收消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

5. 关闭RocketMQ

# 1.关闭Broker
sh bin/mqshutdown broker
# 2.关闭NameServer
sh bin/mqshutdown namesrv

6. 基本概念

通过上面的安装以及简单案例的快速入门之后,我们再来说一说RocketMQ中的基本概念。

6.1 消息模型(Message Model)

RocketMQ主要由 Producer、Broker、Consumer 三部分组成,其中Producer 负责生产消息,Consumer 负责消费消息,Broker 负责存储消息。Broker 在实际部署过程中对应一台服务器,每个 Broker 可以存储多个Topic的消息,每个Topic的消息也可以分片存储于不同的 Broker。Message Queue 用于存储消息的物理地址,每个Topic中的消息地址存储于多个 Message Queue 中。ConsumerGroup 由多个Consumer 实例构成。

6.2 消息生产者(Producer)

负责生产消息,一般由业务系统负责生产消息。一个消息生产者会把业务应用系统里产生的消息发送到broker服务器。RocketMQ提供多种发送方式,同步发送、异步发送、顺序发送、单向发送。同步和异步方式均需要Broker返回确认信息,单向发送不需要。

6.3 消息消费者(Consumer)

负责消费消息,一般是后台系统负责异步消费。一个消息消费者会从Broker服务器拉取消息、并将其提供给应用程序。从用户应用的角度而言提供了两种消费形式:拉取式消费、推动式消费。

6.4 主题(Topic)

表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。

6.5 Broker Server

消息中转角色,负责存储消息、转发消息。Broker Server在RocketMQ系统中负责接收从生产者发送来的消息并存储、同时为消费者的拉取请求作准备。Broker Server也存储消息相关的元数据,包括消费者组、消费进度偏移和主题和队列消息等。

6.6 Name Server

路由消息的提供者。生产者或消费者能够通过Name Server查找各主题相应的Broker IP列表。多个Namesrv实例组成集群,但相互独立,没有信息交换。

——End——
更多精彩分享,可扫码关注微信公众号哦。

在这里插入图片描述

你可能感兴趣的:(中间件/RocketMQ,RocketMQ,消息中间件)