RocketMQ(一):基本概念和环境搭建

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 是一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务
  • 官网: http://rocketmq.apache.org

为什么要使用MQ?

  • 削峰限流:设置流程缓冲池,可以让后端系统按自身吞吐能力进行消费,不被冲垮
  • 异步:消息发送者可以发送一个消息而无需等待响应
  • 解耦:发送者和接收者不必了解对方,只需要确认消息,不必同时在线

MQ的执行流程

  • 发送者把消息发给消息服务器[MQ]
  • 消息服务器把消息存放在若干队列/主题中,在合适的时候,消息服务器会把消息转发给接受者
  • 在这个过程中,发送和接受是异步
  • 发送者可以和接受者一对一(互发微信),也可以一对多(微信订阅号)

RocketMQ(一):基本概念和环境搭建_第1张图片

二、各个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,然后消费消息

RocketMQ(一):基本概念和环境搭建_第2张图片

3、生产和消费理解

  • 消息会被投递(或者消费者主动拉去)给每一个消费者组
  • 在每一个组内是进行负裁均衡还是广播模式,是看这个消费者组的配置

RocketMQ(一):基本概念和环境搭建_第3张图片

四、RocketMQ安装

1、下载RocketMQ

下载地址:https://rocketmq.apache.org/dowloading/releases/

  • RecketMQ服务端

RocketMQ(一):基本概念和环境搭建_第4张图片

  • RecketMQ客户端

RocketMQ(一):基本概念和环境搭建_第5张图片

2、解压并配置环境变量

RocketMQ(一):基本概念和环境搭建_第6张图片

环境变量设置NameServer的ip地址

# RocketMQ
export NAMESRV_ADDR=localhost:9876

3、修改nameServer的运行脚本-runserver.sh

进入bin目录下,修改runserver.sh文件,将71行和76行的Xms和Xmx等改小一点

RocketMQ(一):基本概念和环境搭建_第7张图片

4、修改broker的运行脚本-runbroker.sh

进入bin目录下,修改runbroker.sh文件,修改67行

RocketMQ(一):基本概念和环境搭建_第8张图片

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文件夹,用于存放日志

RocketMQ(一):基本概念和环境搭建_第9张图片

  • 启动nameSrv
nohup sh bin/mqnamesrv > logs/namesrv.log &
  • 启动broker 这里的-c是指定使用的配置文件
nohup sh bin/mqbroker -c conf/broker.conf > logs/broker.log &
  • 查看结果

RocketMQ(一):基本概念和环境搭建_第10张图片

7、Dashboard客户端控制台

  • 第一步中下载客户端是rocketmq-dashboard-1.0.0压缩包
  • 在rocketmq-dashboard-1.0.0\src\main\resources下的文件application.properties中进行配置的修改

RocketMQ(一):基本概念和环境搭建_第11张图片

  • 在rocketmq-dashboard-1.0.0\pom.xml这个文件所在的目录下执行Maven打包命令
mvn clean package -Dmaven.test.skip=true
  • 打包完后会新生成一个文件夹target,获取可执行jar

RocketMQ(一):基本概念和环境搭建_第12张图片

  • 将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/

RocketMQ(一):基本概念和环境搭建_第13张图片

  • 杀mq进程(namesrv、broker、dashboard)

RocketMQ(一):基本概念和环境搭建_第14张图片

你可能感兴趣的:(消息队列,rocketmq)