中间件速查手册
消息队列主题

Topic 是什么?

消息的逻辑分类,同一类消息写进同一个 Topic

类比:一个电视频道,所有同类节目都在这个频道播

它是什么

Topic 只是逻辑上的名字,本身不存消息。真正存消息的是它下面的 Partition(Kafka)或 MessageQueue(RocketMQ)。

生产者和消费者都面向 Topic 编程:生产者往 order-topic 写,消费者从 order-topic 读,双方不需要知道对方是谁。

为什么要有它

它是解耦的关键。新增一个下游系统,只要订阅同一个 Topic,上游一行代码都不用改。

Topic 也是权限和配额的单位:可以限制某个应用只能写 order-topic,或者给不同 Topic 设不同的保留时长。

常见误区

Topic 越多越好吗?不是。Kafka 每个分区都对应磁盘文件和内存结构,Topic 数量暴涨会拖慢 Controller 和元数据同步;RocketMQ 的 Topic 过多同样会显著影响性能。

  • 一个业务一条 Topic,不要一条消息一个 Topic
  • 消息类型差异用 tag / header 区分,而不是新建 Topic
  • Topic 的命名建议带业务域前缀,如 trade.order.created

它出现在这些中间件里

相关问题

相关概念