看了保证让你高呼“牛逼”的RocketMQ知识体系

本文详细介绍了RocketMQ的安装部署、核心概念和最佳实践,包括Name Server、Broker、Producer和Consumer的角色,以及消息的顺序、消费模式和消息模型的演变。此外,还探讨了消息丢失问题的解决方案,以及如何通过幂等性和事务消息来保证分布式事务的一致性。最后,讨论了RocketMQ中顺序消息的实现及其与异常的关系。
摘要由CSDN通过智能技术生成

前言:

如果你现在正在看这句话,那么你需要有点时间来对这篇文章进行阅读。文章篇幅超
超超超超长,跟我一样!,文末也整合了一些RocketMQ的资料!
谢谢!如果有帮助,麻烦点赞支持我!

Windows安装部署

下载

地址:[https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.5.2/rocketmq-all-4.5.2-bin-release.zip]
选择‘Binary’进行下载
解压已下载工程

配置

新增系统变量 ROCKETMQ_HOME -> F:\RocketMQ\rocketmq-4.5.2
JAVA_HOME -> F:\Java_JDK\JDK1.8 Path
系统变量新增:Maven/bin目录
PS:RocketMQ 消息存储在C:\Users\Administrator\store store目录中 文件占用较大,注意删除不必要的内容

启动

start mqnamesrv.cmd
start mqbroker.cmd -n 127.0.0.1:9876autoCreateTopicEnable=true

Rocket集成可视化监控插件

  1. 任意目录(拉取项目,随便哪里都行)git clone github.com/apache/rock…

  2. 进入‘rocketmq-externals\rocketmq-console\src\main\resources’文件夹,打开‘application.properties’进行配置

  3. 其实就是一个SpringBoot服务,确定好端口,别重复即可
    server.port=8100
    rocketmq.config.namesrvAddr=127.0.0.1:9876

  4. 进入‘\rocketmq-externals\rocketmq-console’文件夹
    执行‘mvn clean package -Dmaven.test.skip=true’,编译生成target
    java -jar rocketmq-console-ng-1.0.1.jar

  5. 根据配置地址访问: http://127.0.0.1:8100

Rocket可视化监控插件 增加Topic | 自动增加Topic(4.5.2版本)

在这里插入图片描述

4.5.2 版本 支持自动创建Topic
4.3.0 版本 必须通过监控程序配置Topic,否则执行程序报错,没有此路由

SpringBoot集成 RocketMQ

<!--RocketMQ-->
<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-client</artifactId>
    <version>4.5.2</version>
</dependency>

RocketMQ基本概念

概览

基于RocketMQ的分布式系统,一般可以分为四个集群:Name server、broker、producer、consumer

  1. name server
  • 提供轻量级的服务发现和路由服务;

  • 每个节点都存放了全部的路由信息和对应的读写服务;

  • 存储支持水平扩展

  1. broker
  • 提供满足TOPIC和QUEUE机制的消息存储服务;
  • 有推和拉两种模式;
  • 通过2或3拷贝实现高可用;
  • 提供上亿消息的堆积能力;
  • 提供故障恢复、统计功能和告警功能;
  1. producer
  • 支持分布式部署,通过负载平衡模块给broker发消息
  • 支持快速失败
  • 低延迟
  1. consumer
  • 支持推和拉两种模式
  • 支持集群消费和广播消费

核心模块

Name Server

提供Broker管理;Routing管理(路由管理)

NameServer,很多时候称为命名发现服务,其在RocketMQ中起着中转承接的作用,是一个无状态的服务,多个NameServer之间不通信。任何Producer,Consumer,Broker与所有NameServer通信,向NameServer请求或者发送数据。而且都是单向的,Producer和Consumer请求数据,Broker发送数据。正是因为这种单向的通信,RocketMQ水平扩容变得很容易

  • 提供轻量级的服务发现和路由服务;
  • 每个节点都存放了全部的路由信息和对应的读写服务;
  • 存储支持水平扩展

总结:相比于ZooKeeper提供的分布式锁,发布和订阅,数据一致性,选举等,在RocketMQ是不适用的,因此重写了一套更加轻量级的发现服务,主要用以存储 Broker相关信息以及当前Broker上的topic信息,路由信息等

Broker Server

提供Remoting Module、客户端管理、存储服务、HA服务(主从)、索引服务

  • 提供满足TOPIC和QUEUE机制的消息存储服务;
  • 有推和拉两种模式;
  • 通过2或3拷贝实现高可用;
  • 提供上亿消息的堆积能力;
  • 提供故障恢复、统计功能和告警功能;
producer
  • 支持分布式部署,通过负载平衡模块给broker发消息
  • 支持快速失败
  • 低延迟
consumer
  • 支持推和拉两种模式
  • 支持集群消费和广播消费

核心角色介绍

生产者

生产者发送业务系统产生的消息给broker, RocketMQ提供了多种发送方式:同步的、异步的、单向的

生产者组

具有相同角色的生产者被分到一组, 假如原始的生产者在事务后崩溃,broker会联系 同一生产者组中的不同生产者实例,继续提交或回滚事务

消费者

一个消费者从broker拉取信息,并将信息返还给应用。为了我们应用的正确性,提供了两种消费者类型:
拉式消费者:拉式消费者从broke

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值