RocketMQ入门

110 阅读3分钟

这是我参与8月更文挑战的第10天,活动详情查看:8月更文挑战

官⽹地址:rocketmq.apache.org/

作用:
1异步解耦
2削峰填谷
RocketMQ是⼀款阿⾥巴巴开源的消息中间件,在2017年9⽉份成为Apache的顶级项⽬,是国内⾸个互联⽹中间件在 Apache 上的顶级项⽬。
应用场景:
提供丰富的消息类型,满⾜各种严苛场景下的⾼级特性需求,当前⽀持的消息类型涵盖普通消息、顺序消息(全局顺序 / 分区顺序)、分布式事务消息、定时消息/延时消息;

角色介绍:
Broker集群:
Broker⽤于接收⽣产者发送消息,或者消费者消费消息的请求。⼀个Broker集群由多组
Master/Slave组成,Master可写可读,Slave只可以读,Master将写⼊的数据同步给Slave。每个
Broker节点,在启动时,都会遍历NameServer列表,与每个NameServer建⽴⻓连接,注册⾃⼰的信
息,之后定时上报。
Producer集群:
消息的⽣产者,通过NameServer集群获得Topic的路由信息,包括Topic下⾯有哪些Queue,这些
Queue分布在哪些Broker上等。Producer只会将消息发送到Master节点上,因此只需要与Master节点
建⽴连接。
Consumer集群:
消息的消费者,通过NameServer集群获得Topic的路由信息,连接到对应的Broker上消费消息。
注意,由于Master和Slave都可以读取消息,因此Consumer会与Master和Slave都建⽴连接。
NameServer:管理Broker;举例:各个邮局的管理机构
Broker:暂存和传输消息;举例:邮局
Producer发送消息
consumer 和nameserver保持⻓连接,每隔30s将会从nameserver服务器中查询topic路由信息,查询到路由信息信息后,就会根据ip映射⽂件从broker中消费消息。consumer获取路由信息后,会在本地进⾏缓存。consumer和broker保持⻓连接,每隔30s向broker发送⼼跳检测,检测broker是否处于活跃状态。
Topic 是消息中间件⾥⼀个重要的概念,每⼀个 Topic 代表了⼀类消息。
Queue 存在的意义: 消费负载均衡过程中资源分配的基本单元.
Producer Group
⽣产者组,简单来说就是多个发送同⼀类消息的⽣产者称之为⼀个⽣产者组。⼀个⽣产者组,代表着⼀群topic相同的Producer。即⼀个⽣产者组是同⼀类Producer的组合。
Message
代表⼀条消息,⼀个 Message 必须指定 Topic,相当于寄信的地址。⽤户在发送时可以设置
messageKey,便于之后查询和跟踪。Message 还有⼀个可选的 Tag 设置,以便消费端可以基于 Tag 进⾏过滤消息。也可以添加额外的键值对,例如你需要⼀个业务 key 来查找 Broker 上的消息,⽅便在开发过程中诊断问题。

Tag
标签可以被认为是对 Topic 进⼀步细化。⼀般在相同业务模块中通过引⼊标签来标记不同⽤途的消息。
Tag 表示消息的第⼆级类型,⽐如交易消息⼜可以分为:交易创建消息,交易完成消息等。
RocketMQ 提供⼆级消息分类,⽅便灵活控制。