Topic与Tag释义
1)Topic:消息主题,通过 Topic 对不同的业务消息进行分类。
2)Tag:消息标签,用来进一步区分某个Topic下的消息分类,消息队列 RocketMQ允许消费者按照Tag对消息进行过滤,确保消费者最终只消费到他关注的消息类型。
Topic与Tag都是业务上用来归类的标识,区分在于Topic是一级分类,而Tag 可以说是二级分类。
适用场景
什么时候该用topic,什么时候该用tag,可以参考下面的一些考虑进行权衡
考虑消息类型:如普通消息、顺序消息,事务消息、定时(延时)消息,不同消息类型是无法通过tag区分的,这种情况就需要我们创建不同的topic。
业务关联性:如果是不同业务之间没有直关联的消息,建议按照Topic进行区分;而同一个业务只是子类型不一样的消息可以用Tag进行区分。
消息优先级:不同的业务场景可能会导致消费端对于消息的优先级需求不同,有的紧急,有的相对来说对于延时的接收程度更大,不同优先级的消息用不同的Topic进行区分。
消息量级:如果量小但延时要求高的消息,跟超大量级(如万亿)的消息使用同一个Topic,则有可能排队时间过长导致延时无法接受,所以不同量级的消息不要使用不同的tag,需要用不同的Topic。
总结起来就是,在消息分类实践中,有创建多个Topic,以及在同一个Topic下创建多个Tag两种常见做法。一般来说,不同的Topic之间的消息不产生直接业务上的关联,而同一个topic下相互之间产生联系的消息可以选择用tag来区分,一般是相同业务下的不同板块不同类型。