SpringCloud Alibaba从入门到精通教程(六)- 消息组件RocketMQ快速入门介绍·Server启动安装

什么是 RocketMQ?

RocketMq是一个由阿里巴巴开源的消息中间件,在设计上借鉴了Kafka,于2012年开源,在2017年成为Apache顶级项目

基本概念:

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

技术架构:主要分为四个部分

  1. Producer:消息发布的角色,支持分布式集群方式部署。Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程支持快速失败并且低延迟。

  2. Consumer:消息消费的角色,支持分布式集群方式部署。支持以push推,pull拉两种模式对消息进行消费。同时也支持集群方式和广播方式的消费,它提供实时消息订阅机制,可以满足大多数用户的需求。

  3. NameServer:NameServer是一个非常简单的Topic路由注册中心,其角色类似Dubbo中的zookeeper,支持Broker的动态注册与发现。主要包括两个功能:Broker管理,NameServer接受Broker集群的注册信息并且保存下来作为路由信息的基本数据。然后提供心跳检测机制,检查Broker是否还存活;路由信息管理,每个NameServer将保存关于Broker集群的整个路由信息和用于客户端查询的队列信息。然后Producer和Conumser通过NameServer就可以知道整个Broker集群的路由信息,从而进行消息的投递和消费。NameServer通常也是集群的方式部署,各实例间相互不进行信息通讯。Broker是向每一台NameServer注册自己的路由信息,所以每一个NameServer实例上面都保存一份完整的路由信息。当某个NameServer因某种原因下线了,Broker仍然可以向其它NameServer同步其路由信息,Producer,Consumer仍然可以动态感知Broker的路由的信息。

  4. BrokerServer:Broker主要负责消息的存储、投递和查询以及服务高可用保证,为了实现这些功能,Broker包含了以下几个重要子模块。

一般MQ适用场景:

  1. 流量削峰:提升系统高并发处理能力,比如秒杀场景
  2. 异步处理:提高系统吞吐量
  3. 应用解耦:降低系统模块之间耦合度

快速入门

一、Server启动安装

1. 预备环境准备

RocketMQ 依赖 Java 环境来运行。如果您是从代码开始构建并运行RocketMQ,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:

  1. 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
  2. 64 bit JDK 1.8+;下载 & 配置
  3. Maven 3.2.x+;下载 & 配置
  4. Git
  5. 4G以上空余硬盘空间

2. 下载源码或者安装包(本文中使用的方式)

你可以通过下载源码包,和发行包两种方式来获取 RocketMQ

本文中使用的版本是:源码包 rocketmq-all-4.7.0-source-release.zip

3. 下载后,解压并构建包

unzip rocketmq-all-4.7.0-source-release.zip
cd rocketmq-all-4.7.0-source-release/
mvn -Prelease-all -DskipTests clean install -U

进入目录:

cd distribution/target/rocketmq-4.7.0/rocketmq-4.7.0

4. 启动Name Server服务

启动命令:

nohup sh bin/mqnamesrv &

查看日志:

tail -f ~/logs/rocketmqlogs/namesrv.log

5. 启动Broker服务

启动命令:

nohup sh bin/mqbroker -n localhost:9876 &

查看日志:

tail -f ~/logs/rocketmqlogs/broker.log 

6. 测试发送&接收消息(demo),验证是否成功

“发送消息”测试:

 > 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...

7. 停止服务

停止broker服务:

> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

停止nameserver服务:

> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

官方资料

RocketMQ官方中文开发者指南

该系列教程

SpringCloud Alibaba从入门到精通教程

SpringBoot从入门到精通教程(三)- RocketMQ集成和场景案例分析

我的专栏

 

 

-------------------------------

-------------------------------

 

我的CSDN主页

关于我(个人域名)

我的开源项目集Github

 

期望和大家一起学习,一起成长,共勉,O(∩_∩)O谢谢

欢迎交流问题,可加个人QQ 469580884,

或者,加我的群号 751925591,一起探讨交流问题

不讲虚的,只做实干家

Talk is cheap,show me the code

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页