![]() |
1
rrfeng 1 天前 via Android
不懂 rmq ,它当年官方文档垃圾的什么都找不到。
kafka 的话,consumer group 是从属于 topic 的,不存在 「一个 consumer group 消费多个 topic 」这种概念… |
![]() |
3
Red998 1 天前
一个 topic 可以同时被多个消费组消费、每个组消费隔离互不影响。但是一个 topic 的队列只能被一个消费者组中的一个消费者消费。 集群模式下貌似是这样 。mq 支持的 只不过集成那些自己实现?
|
4
dddd1919 1 天前 ![]() 这个示例的用法本身就有问题,同一个 consumerGroup 代表的是配置和行为相同的一组消费实例,应该定义到一个 listener 入口下。链接示例的两个 listener 使用同一个 consumerGroup 但 topic 配置不同会引发未知的风险比如订阅覆盖,如果订阅两个 topic 但处理逻辑一致,那就可以直接 topic = {"topic_A", "topic_B"},拆开写的方式也不符合行为一致的设计
|
![]() |
5
yidinghe 1 天前 ![]() https://rocketmq.apache.org/docs/domainModel/07consumergroup/
这么说吧,但凡正确理解 ConsumerGroup 作用的人,都不会想到你这种用法,因为 ConsumerGroup 的本意就是让多个 Consumer 分担一个 Topic 的消费。至于你贴的这篇文章,内容简直是胡说八道,没有任何证据证明 ConsumerGroup 支持多个 Topic 。那里面的日志是怎么回事,其实不过是启动时创建了两个 DefaultRocketMQListenerContainer 罢了,各自对应不同的 Topic ,而这正是混乱的起源。 那么为什么会出现“监听不到”的现象?其实是消息被丢弃了。为什么,假如有两个 topic1 和 topic2 ,当同时出现两个 topic 的消息时,服务器只要确认某个组能接收这个 Topic ,那么就发给这个组。注意这里根本就不考虑组内 Consumer 自身的 Topic 。这就导致接收 topic1 的 Listener 会直接丢弃 topic2 的消息,然后服务器发现消息没有确认,然后再重发,再被丢弃。总之千万不要这么做。 |
![]() |
6
bronyakaka 1 天前
RocketMQ 不清楚,kafka 的话一个 ConsumerGroup 可以对应多个 topic ,本质上是处理的 topic 分区,通过 分区策略 将分区分配给各个消费者实例。
|
![]() |
7
macttt 1 天前
@yidinghe 在阿里云的官方文档里,都是以一个 Group 订阅多个 topic 的情况为基础,画出的示意图。可以参考这个订阅关系一致性的说明文档: https://help.aliyun.com/zh/apsaramq-for-rocketmq/cloud-message-queue-rocketmq-4-x-series/use-cases/subscription-consistency?spm=a2c4g.11186623.help-menu-29530.d_3_2.601c6dd5JHvlkr&scm=20140722.H_43523._.OR_help-T_cn~zh-V_1
|
![]() |
9
macttt 1 天前
@deku9 对的,但是需要保持这个 Group 里的所有 consumer 订阅的 topic 和 tag 保持一致,因为订阅表里一个 Group 只会有一种订阅关系,如果 Group 里的 consumer 有不一致的订阅关系,会导致消息消费异常。
|
![]() |
10
0xD800 1 天前
看了 macttt 发的阿里云文档,再看 juejin 里面的代码。
我的理解是: juejin 中用户定义了两个 consumer [ FlowNodeEventConsumer(consumerGroup=test_node_group, topic=party_test_event), PartyNodeEventConsumer(consumerGroup=test_node_group, topic=flow_test_event) ], 等同于阿里云文档中的错误订阅关系示例 1: 在消费者组 test_node_group 中,消费者 FlowNodeEventConsumer 和消费者 PartyNodeEventConsumer 订阅的 topic 不一致。 https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/1658844861/p301742.png 总结:同一个 consumerGroup 中,支持订阅多个 topic ,多 tag ,但是必须每个 consumer 的订阅关系保持一致。 |