RocketMq | 消费 - 订阅关系(Subscription)
§1 订阅关系 & 订阅关系集
RocketMq 官网中,只有 订阅关系 这个概念,但日常所说的其实是 订阅关系集,此文档中做显示区分
订阅关系
官方定义为:某个消费者组对于某个主题的订阅,可以是订阅全部,也可以是附加过滤条件的部分
消费者组 CG1 订阅了主题 T1,这就是一条订阅关系
消费者组 CG1 订阅了主题 T2 中带有 tag1 的部分,这也是一条订阅关系
rocketMq 中,使用 SubscriptionData 来描述订阅关系,关键属性如下,可见确实是指对单个 topic 的订阅
public class SubscriptionData implements Comparable<SubscriptionData> {
private String topic;
private Set<String> tagsSet = new HashSet<String>();
private String expressionType = ExpressionType.TAG;
}
订阅关系具有独立性
- 对于同一个消费者组,可以订阅多个 TOPIC,每个订阅都是一条订阅关系,相互独立
- 对于同一个 TOPIC,可以被多个消费者组订阅,每个订阅都是一条订阅关系,相互独立
订阅关系集
我们通常站在一个消费者组的视角说订阅关系,此时所说的其实是指消费者组下所有订阅关系的集合,即订阅关系集
§2 订阅关系一致
订阅关系一致:一个消费者组下,所有消费者实例要求具有相同的订阅关系集
假设,某消费者组 CG1,订阅了
- TOPIC0 的所有信息
- TOPIC1 下带有 tag1 标签的信息
- TOPIC2 下属性 p1=x 的信息
我们可以把上面信息简单的记为 CG1: T0, T1@tag1, T2@p1=x
则若 CG1 下所有消费者实例的订阅关系 数据和数量都一致,就认为他们订阅关系一致
常见误区
一个消费者组不能订阅多个 topic
并不是,订阅关系一致只强调消费者组内成员的订阅关系集相互一致,
至于订阅关系集内有多少元素,分别是什么,这些信息单拿出来在订阅关系一致这个问题上都不重要
§3 订阅关系场景一览

§4 排查
从控制台排查
- 对于云上 rocketmq 可以通过 ons 控制台的诊断

浙公网安备 33010602011771号