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 实例构成。
技术架构:主要分为四个部分
- Producer:消息发布的角色,支持分布式集群方式部署。Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程支持快速失败并且低延迟。
- Consumer:消息消费的角色,支持分布式集群方式部署。支持以push推,pull拉两种模式对消息进行消费。同时也支持集群方式和广播方式的消费,它提供实时消息订阅机制,可以满足大多数用户的需求。
- 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的路由的信息。
- BrokerServer:Broker主要负责消息的存储、投递和查询以及服务高可用保证,为了实现这些功能,Broker包含了以下几个重要子模块。
一般MQ适用场景:
- 流量削峰:提升系统高并发处理能力,比如秒杀场景
- 异步处理:提高系统吞吐量
- 应用解耦:降低系统模块之间耦合度
快速入门
一、Server启动安装
1. 预备环境准备
RocketMQ 依赖 Java 环境来运行。如果您是从代码开始构建并运行RocketMQ,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:
- 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
- 64 bit JDK 1.8+;下载 & 配置。
- Maven 3.2.x+;下载 & 配置。
- Git
- 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集成和场景案例分析
我的专栏
- SpringBoot系列专栏
- SpringCloud系列专栏
- 高可用高并发实战专栏
- 微服务架构实战
- DevOps实战专栏
- 程序化广告实战专栏
-———————————————
-———————————————
我的CSDN主页
关于我(个人域名)
我的开源项目集Github
期望和大家一起学习,一起成长,共勉,O(∩_∩)O谢谢
欢迎交流问题,可加个人QQ 469580884,
或者,加我的群号 751925591,一起探讨交流问题
不讲虚的,只做实干家
Talk is cheap,show me the code
还没有评论,来说两句吧...