Spring源码系列文章
RocketMQ(一):基本概念和环境搭建
目录
- 一、RocketMQ简介
- 二、各个MQ产品的比较
- 三、RocketMQ重要概念
- 1、基本概念
- 2、消息从发送到被消费的的流程
- 3、生产和消费理解
- 四、RocketMQ安装
- 1、下载RocketMQ
- 2、解压并配置环境变量
- 3、修改nameServer的运行脚本-runserver.sh
- 4、修改broker的运行脚本-runbroker.sh
- 5、修改broker的配置文件
- 6、启动nameSrv和broker
- 7、Dashboard客户端控制台
一、RocketMQ简介
- RocketMQ是
阿里巴巴
2016年MQ中间件,使用Java
语言开发 - RocketMQ 是一款开源的
分布式
消息系统,基于高可用分布式集群
技术,提供低延时
的、高可靠的消息发布与订阅服务
为什么要使用MQ?
- 削峰限流:设置流程缓冲池,可以让后端系统按自身吞吐能力进行消费,不被冲垮
- 异步:消息发送者可以发送一个消息而无需等待响应
- 解耦:发送者和接收者不必了解对方,只需要确认消息,不必同时在线
MQ的执行流程
- 发送者把消息发给消息服务器[MQ]
- 消息服务器把消息存放在若干队列/主题中,在合适的时候,消息服务器会把消息转发给接受者
- 在这个过程中,发送和接受是
异步
的 - 发送者可以和接受者
一对一
(互发微信),也可以一对多
(微信订阅号)
二、各个MQ产品的比较
特性 | ActiveMQ | RabbitMQ | RocketMQ | Kafka |
---|---|---|---|---|
开发语言 | java | erlang | java | scala |
吞吐量 | 万级 | 万级 | 十万级 | 十万级 |
延迟性 | ms级 | us级 | ms级 | ms级以内 |
功能特性 | 性能一般 出现早 功能单一 吞吐量低 | 性能好 管理界面丰富 功能丰富 吞吐量一般 | 性能好 功能最丰富 吞吐量高 | 吞吐量最大 功能单一应用大数据领域 |
三、RocketMQ重要概念
1、基本概念
Producer
:消息的发送者,生产者;举例:发件人Consumer
:消息接收者,消费者;举例:收件人Broker
:暂存和传输消息的通道;举例:快递NameServer
:管理Broker;举例:各个快递公司的管理机构 相当于broker的注册中心Queue
:队列,消息存放的位置,一个Broker中可以有多个队列Topic
:主题,消息的分类ProducerGroup
:生产者组ConsumerGroup
:消费者组,多个消费者组可以同时消费一个主题的消息
2、消息从发送到被消费的的流程
- Producer询问NameServer
- NameServer分配一个broker 然后Consumer也要询问NameServer
- 得到一个具体的broker,然后消费消息
3、生产和消费理解
- 消息会被投递(或者消费者主动拉去)给
每一个消费者组
- 在每一个组内是进行
负裁均衡
还是广播模式
,是看这个消费者组的配置
四、RocketMQ安装
1、下载RocketMQ
下载地址:https://rocketmq.apache.org/dowloading/releases/
- RecketMQ服务端
- RecketMQ客户端
2、解压并配置环境变量
环境变量设置NameServer的ip地址
# RocketMQ
export NAMESRV_ADDR=localhost:9876
3、修改nameServer的运行脚本-runserver.sh
进入bin目录下,修改runserver.sh文件,将71行和76行的Xms和Xmx等改小一点
4、修改broker的运行脚本-runbroker.sh
进入bin目录下,修改runbroker.sh文件,修改67行
5、修改broker的配置文件
进入conf目录下,修改broker.conf文件
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# 添加配置
namesrvAddr=localhost:9876
autoCreateTopicEnable=true
brokerIP1=localhost
namesrvAddr
:可以写localhost因为nameSrv和broker在一个服务器autoCreateTopicEnable
:自动创建主题,不然需要手动创建出来brokerIP1
:broker的ip地址
6、启动nameSrv和broker
- 首先在安装目录下创建一个logs文件夹,用于存放日志
- 启动nameSrv
nohup sh bin/mqnamesrv > logs/namesrv.log &
- 启动broker 这里的-c是指定使用的配置文件
nohup sh bin/mqbroker -c conf/broker.conf > logs/broker.log &
- 查看结果
7、Dashboard客户端控制台
- 第一步中下载客户端是rocketmq-dashboard-1.0.0压缩包
- 在rocketmq-dashboard-1.0.0\src\main\resources下的文件
application.properties
中进行配置的修改
- 在rocketmq-dashboard-1.0.0\pom.xml这个文件所在的目录下执行Maven打包命令
mvn clean package -Dmaven.test.skip=true
- 打包完后会新生成一个文件夹target,获取可执行jar
- 将jar包复制到mq的安装目录下,
指定namesrv地址、端口、日志位置
nohup java -jar rocketmq-dashboard-1.0.0.jar --server.port=9999 rocketmq.config.namesrvAddr=127.0.0.1:9876 > logs/dashboard.log &
- 浏览器访问http://localhost:9999/
- 杀mq进程(namesrv、broker、dashboard)