【2023裸辞失业后之初学RocketMQ】

目录

RocketMQ概述

MQ概述

Message Queue:是提供消息队列服务的中间件,提供消息生产,存储,消费的全过程。

作用:限流削峰,异步解耦。

常见的MQ产品

ActiveMQ :早期产品,使用Java开发的
RabbitMQ :吞吐量比kafuka和RocketMQ低,不是Java开发(ErLang),定制开发难度大
Kafuka :高吞吐量,常用于大数据领域实时计算和日志收集,采用Scala/Java开发,采用自研协议
RocketMQ :阿里巴巴产品,经过多年双十一检验,使用Java开发

常见的协议

JMS,Java Messaging Service (Java消息服务) 。是Java平台上有关MOM(的技术规范,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口,简化企业应用的开发。ActiveMO是该协议的典型实现。

STOMP, Streaming Text Orientated Message Protocol ,是一种MOM设计的简单文本协议。STOMP提供一个可互操作的连接格式,允许客户端与任意STOMP消息代理进行交互。ActiveMQ是该协议的典型实现,RabbitMO通过插件可以支持该协议。

AMOP,Advanced Message Oueuing Protocol(高级消息队列协议),一个提供统一消息服务的应用层标准,是应用层协议的一个开放标准,是一种MOM设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。 RabbitMQ是该协议的典型实现。

Rocket的安装和启动

基本概念

消息(Message) :消息系统所传输信息的物理载体,生产和消费数据的最小单位,每条消息必须属于一个主题。
主题(Topic) :Topic表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位,一个生产者可以同时发送多种Topic的消息;而一个消费者只对某种特定的Topic感兴趣,即只可以订阅和消费一种Topic的消息。

队列(Queue) :存储消息的物理实体。一个Topic中可以包含多个Queue,每个Queue中存放的就是该Topic的消息Topic的Queue也被称为一个Topic中消息的分区。一个Topic的Queue中的消息只能被一个消费者组中的一个消费者消费

系统架构

1)producer:消息生产者,负责生产消息。Producer通过MO的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程支持快速失败并且低延迟。

RocketMQ中的消息生产者都是以生产者组(Producer Group) 的形式出现的。生产者组是同一类生产者的集合,这类Producer发送相同Topic类型的消息。

2)Consumer:消息消费者,负责消费消息。一个消息消费者会从Broker服务器中获取到消息,并对消息进行相关业务处理。

RocketMO中的消息消费者都是以消费者组 (Consumer Group) 的形式出现的。消费者组是同一类消费者的集合,这类Consumer消费的是同一个Topic类型的消息。消费者组使得在消息消费方面,实现负载均衡和容错的目标变得非常容易。

3)NameServer:NameServer是一个Broker与Topic路由的注册中心,支持Broker的动态注册与发现。主要包括两个功能:

  • Broker管理: 接受Broker集群的注册信息并且保存下来作为路由信息的基本数据;提供心跳检测机制,检查Broker是否还存活。
  • 路由信息管理: 每个NameServer中都保存着Broker集群的整个路由信息和用于客户端查询的队列信息。Producer和Conumser通过NameServer可以获取整个Broker集群的路由信息,从而进行消息的投递和消费。

安装RocketMQ和控制台

1)到官网下载下载 下载地址 下载二进制的
2)把这个包放到linux中,解压,修改bin中的 runserver.shrunbroker.sh

bash 复制代码
unzip rocketmq-all-5.1.3-bin-release.zip

把下面这些内存改小(配置文件都看一遍,不同版本的配置文件可能不同),我这里是已经改好的

3)修改conf下broker.conf,加上下面两行

bash 复制代码
namesrvAddr=服务器外网IP:9876
brokerIP1=服务器外网IP

3.5)设置密码

  1. 创建密码文件: 首先,你需要创建一个密码文件,其中包含用户的用户名和密码。可以使用如下格式创建一个密码文件(例如:broker-users.properties):
bash 复制代码
# 用户名=密码
userA=passwordA
userB=passwordB
  1. 密码文件放置位置: 将创建的密码文件放置在 RocketMQ 的配置目录下,一般是 conf 文件夹。
  2. Broker 配置: 修改 broker.conf 配置文件,找到以下配置项,并添加对应的值:
bash 复制代码
# 启用密码认证
enablePropertyFilter=true

# 指定密码文件的路径
propertyFile=${user.home}/conf/broker-users.properties

4)改完之后 看官网教程往下走就行 官网教程,注意启动broker的时候执行

bash 复制代码
nohup sh mqbroker -n localhost:9876 --enable-proxy &   -c ../conf/broker.conf & tail -f nohup.out

5)安装控制台,我是在docker中装的 安装docker教程(直接运行的springboot项目太麻烦了)

运行如下命令即可

bash 复制代码
docker run -d --restart=always --name rmqadmin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=你的主机ip:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 9800:8080 pangliang/rocketmq-console-ng
相关推荐
码上一元1 天前
消息队列:如何确保消息不会丢失?
kafka·消息队列·rocketmq
bubble小拾2 天前
RocketMQ实战与集群架构详解
架构·rocketmq·java-rocketmq
拾木2003 天前
RocketMQ 消费方式
github·rocketmq·java-rocketmq
我真有起床气4 天前
如何在 Spring Boot 中实现 RocketMQ 的批量消息消费
spring boot·rocketmq·java-rocketmq
花开富贵..9 天前
RocketMQ安装与使用
spring boot·spring cloud·rocketmq
程序员小雷12 天前
字节面试 | 如何测试RocketMQ、RocketMQ?
测试工具·面试·职场和发展·单元测试·测试用例·rocketmq·postman
充值内卷12 天前
ASP.NET Core 入门教学八 集成RocketMQ消息队列
后端·asp.net·rocketmq
甜甜不甜100113 天前
消息中间件 --Kafka
分布式·kafka·rocketmq
lixiaoyi0114 天前
Rocketmq源码分析(1)
rocketmq
阿里云云原生14 天前
基于 RocketMQ 的云原生 MQTT 消息引擎设计
阿里云·云原生·rocketmq