rocketMQ简记

30 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天 RocketMQ 是一个阿里开源的高级消息队列。它主要有下面这几个组件:

NameServer:名称服务,它负责管理整个RocketMQ集群的元数据信息,包括 topic、broker、producer、consumer 之类的信息,并管理着broke节点。

Broke则是所谓的代理节点,用于储存和转发消息。每个 broker 都有自己的存储来保存消息,并且处理 producer 和 consumer 的请求。 broker还有所谓的高可用模式(主从模式)。

Producer:生产者或者有些场景叫做发布者者,负责向 RocketMQ 集群中的 topic 发送消息。生产者可以选择同步或异步的方式发送消息,并可以根据需要进行事务管理。同步异步具体来说就是是否需要确定消息被消费了,消息队列中消费消息才是更重要的,而不像数据库,持久化数据才是最重要的。

Consumer:消费者或者有些时候也叫做订阅者,负责从 RocketMQ 集群中的 topic 订阅并消费消息。在 RocketMQ 中,有两种类型的消费者:push 模式和 pull 模式。push 模式下,消费者会主动向 broker 请求获取消息;而 pull 模式下,消费者则需要周期性地向 broker 请求消息。

在一次简单的消息队列使用中,RocketMQ 的各组件发挥的功能如下:

Producer:负责向指定的 topic 发送消息。生产者发送消息时可以选择同步或异步的方式,并且可以设置消息的延迟时间。 Broker:接收生产者发送的消息,并将其存储在磁盘中。Broker 还负责将消息交给到相应的消费者,以及管理 topic 和 consumer 的元数据信息。

Consumer:从指定的 topic 订阅并消费消息。在 RocketMQ 中,有两种类型的消费者:push 模式和 pull 模式。push 模式下,broker 会主动向 broker 推送消息;而 pull 模式下,消费者则需要不断地向 broker 请求消息也就是轮询拉取。

NameServer:提供路由查询功能,以及自动发现和删除 broker 节点,类似于所谓的服务注册功能。在 RocketMQ 中,如果 broker 发生故障,NameServer 会自动将其从集群中删除,并将新的 broker 节点加入到集群中,类似于故障转移功能。