当前位置: 首页>后端>正文

RocketMQ入门

一、RocketMQ结构

1、NameServer

  • 简介

名称服务充当路由消息提供者。没有状态,可横向扩展集群部署。节点之间无任何信息同步

  • 作用

在RocketMQ中提供命名服务,更新和发现Broker服务
接收Borker的请求,注册Broker的路由信息
接收client(producer/consumer)的请求,根据某个topic获取到Broker的路由信息

2、Borker

  • 简介

消息中转角色。每个Broker与NameServer集群中所有节点建立长连接,定时注册Topic信息到所有NameServer。

  • 作用

负责消息转发、存储消息。Broker启动之后需要完成一次将自己注册是NameServer的操作。随后每隔30秒定期向NameServer上报Topic路由信息

3、Producer

  • 简介

消息的生产者

  • 作用

与NameServer的某一个节点建立长连接(Keep-alive),定期从NameServer读取Topic路由信息,并向提供Topic服务的Broker建立长连接,且定期向Broker发送心跳

4、Consumer

  • 简介

消息的消费者

  • 作用

与NameServer的某一个节点建立长连接(Keep-alive),定期从NameServer读取Topic路由信息,并向提供Topic服务的Broker建立长连接,且定期向Broker发送心跳。Consumer既可以从Master节点订阅消息,也可以从Slave节点订阅消息,消费者在向Master拉去消息时,Master服务器会根据拉取偏移量与最大偏移量的距离(判断是否读取老消息,产生读I/O),以及从服务器是否可读等因素判断建议下一次是从Master还是Slave拉取

5、结构图

RocketMQ入门,第1张
结构图

二、生产者发送消息的三种方式

1、单向发送

生产者将消息发出,但是不知道消息有没有发送成功。消息有丢失风险,吞吐量非常高。

2、同步发送

生产者将消息发出,等待服务器返回结果,可以确保消息发送成功。吞吐量低。

3、异步发送

生产者将消息发出,通过服务器回调的方式得到发送结果。可以设置发送失败重试次数。消息有丢失风险,吞吐量高

三、消费者消费消息的两种方式

1、拉取模式

消费者主动去Broker拉取消息。

2、推送模式

由Broker收到消息后,主动推给消费者。

四、消息类型

1、普通消息

normal

2、顺序消息

消息局部有序,整体无序。发送时将消息推送到同一个队列,消费时横向消费保证消息局部有序。要保证最终消费到的消息是有序的,需要从Producer、Broker、Consumer三个步骤都保证消息有序才行。

3、广播消息

把消息发给了所有订阅了对应主题的消费者,而不管消费者是不是同一个消费者组。

4、延迟消息

消息并不会立即发送出去,而是会等一段时间再发送出去。开源部分消息延迟时间分为18个等级,1到18分别对应messageDelayLevel=1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h。商业版可自定义延迟时间。

5、批量消息

多条消息合并成一个批量消息,一次发送出去。这样的好处是可以减少网络IO,提升吞吐量。建议消息不要超过1M,最大长度4M。超过4M拆分消息再发送。

6、过滤消息

消费者通过tag或者sql过滤消息。直接在Broker通过过滤条件过滤减少IO耗时。

7、事务消息

生产者先发送一个half消息给Broker,Broker收到消息之后给予反馈。生产者收到反馈之后开始执行本地事务逻辑,执行完之后会再给Broker发送一条消息告诉Broker是该commit还是rollback。


https://www.xamrdz.com/backend/3b41941395.html

相关文章: