RocketMQ 的消息模型

参考答案

RocketMQ 的消息模型

Message

就是要传输的消息,一个消息必须有一个主题,一条消息也可以有一个可选的Tag(标签)和额外的键值对,可以用来设置一个业务的key,便于开发中在 broker 服务端查找消息。

Topic

主题,是消息的第一级类型,每条消息都有一个主题,就像信件邮寄的地址一样。

主题就是我们具体的业务,例如:

一个电商系统可以有订单消息,商品消息,采购消息,交易消息等。

Topic和生产者和消费者的关系非常松散,生产者和 Topic 可以是1对多,多对1或者多对多,消费者也是这样。

Tag

标签,是消息的第二级类型,可以作为某一类业务下面的二级业务区分,它的主要用途是在消费端的消息过滤。

例如:

采购消息分为采购创建消息、采购审核消息、采购推送消息、采购入库消息、采购作废消息等,这些消息是同一 Topic 和不同的 Tag ,当消费端只需要采购入库消息时,就可以用 Tag 来实现过滤,不是采购入库消息的 tag 就不处理。

Group

组,可分为 ProducerGroup 生产者组合 ConsumerGroup 消费者组,一个组可以订阅多个 Topic 。

一般来说,某一类相同业务的生产者和消费者放在一个组里。

Message Queue

消息队列,一个 Topic 可以划分成多个消息队列。

Topic 只是个逻辑上的概念,消息队列是消息的物理管理单位,当发送消息的时候,Broker 会轮询包含该 Topic 的所有消息队列,然后将消息发出去。

有了消息队列,可以使得消息的存储可以分布式集群化,具有了水平的扩展能力。

offset

是指消息队列中的 offset (下标),消息队列可看做数组。

offset 是 java long,64位,理论上100年不会溢出。

所以,可以认为消息队列是一个长度无限的数据结构。

 

以上,是消息队列 RocketMQ 面试题【RocketMQ 的消息模型】的参考答案。

输出,是最好的学习方法

欢迎在评论区留下你的问题、笔记或知识点补充~

—end—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧