ToB企服应用市场:ToB评测及商务社交产业平台
标题:
图解RocketMQ之主题Topic详解
[打印本页]
作者:
东湖之滨
时间:
2024-8-24 14:42
标题:
图解RocketMQ之主题Topic详解
大家好,我是苍何。
上一篇 图解RocketMQ之初识MQ 已经介绍了消息队列的基础概念、常用的消息队列框架以及 RocketMQ 的团体设计架构。
还没看过或者已经忘记的小同伴可以看看上一篇哈。
我们只有先创建团体的框架和开端的概念,才能更加深入的学习他的技术细节。(学任何技术或知识都是如此,ps:这可不是苍何说的,书本上都这么说。)
上一篇中讲了 RocketMQ 的四大核心概念,也即
生产者、消耗者、broker、nameserver
。作为消息队列的宠儿,可不止这 4 个概念,还有其他比较紧张的概念和模型,只有充分明确了这些核心的理念,才能更好的明确和利用 RocketMQ。
好,你现在先闭上眼,看能想到哪些概念或者名词呢?
我想你第一个想到的应该就是 topic 了(反正我是最先想到了他),OK,那我们这一篇的主题也就是主题 topic,固然此主题非彼主题,不外概念上相差不大,这就是中文的强大之处了。
Topic 概念界说
我们先来看看官方界说:
主题是 RocketMQ 中消息传输和存储的顶层容器,用于标识同一类业务逻辑的消息。
我的明确主题就是消息的分类,比如上一篇说到的鸡毛的餐厅中订单消息是一类主题消息,顾客下单的消息都往订单消息这个主题里面发,那么同样鸡鸡毛的朋友狗毛约他去打球,就属于打球主题消息,依此类推,不难发现,
主题消息的分类其实是受业务所决定的
,你要发什么业务消息最好单独是一个 Topic 主题,大家相互之间互不干扰。
现现在垃圾都要做好干湿分类,消息可不能一个 topic 干到底哦。
Topic 主要有 2 大核心作用:
界说数据的分类隔离
:将差别业务类型的数据拆分到差别的主题中管理,通过主题实现存储的隔离性和订阅隔离性。
界说数据的身份和权限
:RocketMQ 的消息本身是匿名无身份的,同一分类的消息利用雷同的主题来做身份识别和权限管理。
模型关系
在 RocketMQ 中主题 Topic 所处的流程和位置如下:
其实 Topic 是一个逻辑的概念,并不是一个现实的消息容器,每个 Topic 包罗多个消息队列(Queue),队列是消息的现实存储单元,每个队列独立存储消息,队列数量在创建 Topic 时可以设置,后续也可以动态调整。
生产者发送消息时,消息会根据一定战略分配到差别的队列中,常见的分配战略包罗轮询(Round Robin)和哈希(Hashing)。消耗者消耗消息时,同样是从这些队列中拉取消息。
Topic 属性和设置
Topic 主要有以下内部属性,并且可以用来设置。
主题名称
主题名称是在创建主题的时间,我们自己界说的,主要是用于标识主题,名称需要满足集群内唯一。虽然理论上可以按照自己所想随便界说,但官方照旧苦口婆心的给了做了我们一些限制,看看也无妨:
Topic 定名应该尽量利用简短、常用的字符,避免利用特别字符。特别字符会导致体系分析出现非常,字符过长可能会导致消息收发被拒绝。
种别具体建议或限制字符建议字母az或AZ、数字0~9以及下划线(_)、短划线(-)和百分号(%)长度建议1~64个字符体系保留字符Topic名称不允许利用以下保留字符或含有特别前缀的字符定名保留字符TBW102, BenchmarkTest, SELF_TEST_TOPIC, OFFSET_MOVED_EVENT, SCHEDULE_TOPIC_XXXX, RMQ_SYS_TRANS_HALF_TOPIC, RMQ_SYS_TRACE_TOPIC, RMQ_SYS_TRANS_OP_HALF_TOPIC特别前缀rmq_sys, %RETRY%, %DLQ%, rocketmq-broker- 所以,大家照旧老诚实实的定名吧,别触犯人官方的底线,警惕消息都收不到哦。
队列列表
队列既是主题的组成单元,又是消息的最小存储单元
,一个主题内包罗一个或多个队列,消息现实存储在主题的各队列内。队列需要创建主题的时间指定,且一个主题内至少包罗一个队列。
队列的主要作用如下:
存储顺序性
:队列天然具备顺序性,即消息按照进入队列的顺序写入存储,同一队列间的消息天然存在顺序关系,队列头部为最早写入的消息,队列尾部为最新写入的消息。消息在队列中的位置和消息之间的顺序通过位点(Offset)进行标志管理。(这其实也是队列出生就带的属性之一)
流式操纵语义
:RocketMQ 基于队列的存储模型可确保消息从任意位点读取任意数量的消息,以此实现类似
聚合读取、回溯读取等特性
,这些特性是 RabbitMQ、ActiveMQ 等非队列存储模型不具备的。(划重点
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4