maihaoche / rocketmq-spring-boot-starter

Spring Boot starter for RocketMQ
Apache License 2.0
287 stars 147 forks source link

关于 ConsumerGroup、Topic、Tags 的验证逻辑 #18

Closed nickevin closed 4 years ago

nickevin commented 6 years ago

看到下面这段代码:

// 检查consumerGroup
if(!StringUtils.isEmpty(validConsumerMap.get(consumerGroup))) {
    String exist = validConsumerMap.get(consumerGroup);
    throw new RuntimeException("消费组重复订阅,请新增消费组用于新的topic和tag组合: " + consumerGroup + "已经订阅了" + exist);
} else {
    validConsumerMap.put(consumerGroup, topic + "-" + tags);
}

两个问题:

  1. key 是否可以设计成 consumerGroup + topic ,有以下场景: consumerGroup:cg,topic:tp01,tags:tag01 || tag02 consumerGroup:cg,topic:tp01,tags:tag03 || tag04 如果按照原逻辑,就算 topic 相同,tags 不同,也必须新增一个 consumerGroup。

  2. consumerGroup 和 topic、tags 的关系是 1:1 吗?

我是初学者,还请指教,感谢。

15521086285 commented 5 years ago

这个问题解决了吗,我也觉得这个是个问题啊

suclogger commented 4 years ago

这是rocketmq的能力决定的,同一个cid如果消费不同的tag会导致消息错乱(因为tag是在客户端过滤的),感兴趣的话可以看下rocketmq源代码。