【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
相关推荐
yellowatumn2 天前
RocketMq\Kafka如何保障消息不丢失?
分布式·kafka·rocketmq
liangblog3 天前
将RocketMQ集成到了Spring Boot项目中,实现站内信功能
spring boot·rocketmq·java-rocketmq
rgrgrwfe4 天前
从零到一:Spring Boot 与 RocketMQ 的完美集成指南
spring boot·rocketmq·java-rocketmq
是小崔啊5 天前
RocketMQ - 常见问题
rocketmq
G_whang6 天前
RocketMQ 5.0安装部署
rocketmq
chudaxiakkk6 天前
rocketmq-netty通信设计-request和response
rocketmq·netty通信
天天向上杰8 天前
浅聊MQ之Kafka、RabbitMQ、ActiveMQ、RocketMQ持久化策略
java·kafka·rabbitmq·rocketmq·activemq
一个儒雅随和的男子9 天前
RocketMQ与kafka如何解决消息丢失问题?
分布式·kafka·rocketmq
天天向上杰9 天前
浅识MQ的 Kafka、ActiveMQ、RabbitMQ、RocketMQ区别
kafka·rabbitmq·rocketmq·activemq·java-activemq
一个儒雅随和的男子9 天前
RocketMQ和Kafka如何实现顺序写入和顺序消费?
分布式·kafka·rocketmq