
1 rrfeng 2025 年 5 月 5 日 via Android 不懂 rmq ,它当年官方文档垃圾的什么都找不到。 kafka 的话,consumer group 是从属于 topic 的,不存在 「一个 consumer group 消费多个 topic 」这种概念… |
2 F281M6Dh8DXpD1g2 2025 年 5 月 5 日 @rrfeng 一个 group id 确实可以记录多个 topic 的 offset |
3 Red998 2025 年 5 月 5 日 一个 topic 可以同时被多个消费组消费、每个组消费隔离互不影响。但是一个 topic 的队列只能被一个消费者组中的一个消费者消费。 集群模式下貌似是这样 。mq 支持的 只不过集成那些自己实现? |
4 dddd1919 2025 年 5 月 5 日 这个示例的用法本身就有问题,同一个 consumerGroup 代表的是配置和行为相同的一组消费实例,应该定义到一个 listener 入口下。链接示例的两个 listener 使用同一个 consumerGroup 但 topic 配置不同会引发未知的风险比如订阅覆盖,如果订阅两个 topic 但处理逻辑一致,那就可以直接 topic = {"topic_A", "topic_B"},拆开写的方式也不符合行为一致的设计 |
5 yidinghe 2025 年 5 月 6 日 https://rocketmq.apache.org/docs/domainModel/07consumergroup/ 这么说吧,但凡正确理解 ConsumerGroup 作用的人,都不会想到你这种用法,因为 ConsumerGroup 的本意就是让多个 Consumer 分担一个 Topic 的消费。至于你贴的这篇文章,内容简直是胡说八道,没有任何证据证明 ConsumerGroup 支持多个 Topic 。那里面的日志是怎么回事,其实不过是启动时创建了两个 DefaultRocketMQListenerContainer 罢了,各自对应不同的 Topic ,而这正是混乱的起源。 那么为什么会出现“监听不到”的现象?其实是消息被丢弃了。为什么,假如有两个 topic1 和 topic2 ,当同时出现两个 topic 的消息时,服务器只要确认某个组能接收这个 Topic ,那么就发给这个组。注意这里根本就不考虑组内 Consumer 自身的 Topic 。这就导致接收 topic1 的 Listener 会直接丢弃 topic2 的消息,然后服务器发现消息没有确认,然后再重发,再被丢弃。总之千万不要这么做。 |