RocketMQ,不同Group的消费者能否消费相同topic的消息?

非完美主义者 2018-09-11 03:28:35
问题是这样的,RocketMQ中的消息,一个消费者消费后就没有了。 但如果是两个不同的消费组订阅了相同topic的消息,其中一组的消费者取走消息后,另一组的消费者还能再取到这条消息吗?
...全文
15170 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZhuanShenHuaiNian 2020-08-04
  • 打赏
  • 举报
回复 2
同一个topic不同的消费组可以获取消息
ZhuanShenHuaiNian 2020-08-04
  • 打赏
  • 举报
回复
发送报文:myFdc我要测试下0火箭mq 发送报文:myFdc我要测试下1火箭mq 收到消息SpringConsumer3:myFdc我要测试下0火箭mq 收到消息SpringConsumer1:myFdc我要测试下0火箭mq 收到消息SpringConsumer2:myFdc我要测试下0火箭mq 收到消息SpringConsumer3:myFdc我要测试下1火箭mq 收到消息SpringConsumer2:myFdc我要测试下1火箭mq 收到消息SpringConsumer1:myFdc我要测试下1火箭mq
ZhuanShenHuaiNian 2020-08-04
  • 打赏
  • 举报
回复
 @Component
    @RocketMQMessageListener(topic = "myFdc", consumerGroup = "consumer_Fdc_Group")
    public class SpringConsumer1 implements RocketMQListener<String> {
        @Override
        public void onMessage(String msg) {
            System.out.println("收到消息SpringConsumer1:" + msg);
        }
    }

    @Component
    @RocketMQMessageListener(topic = "myFdc", consumerGroup = "consumer_Fdc_Group1")
    public class SpringConsumer2 implements RocketMQListener<String> {
        @Override
        public void onMessage(String msg) {
            System.out.println("收到消息SpringConsumer2:" + msg);
        }
    }

    @Component
    @RocketMQMessageListener(topic = "myFdc", consumerGroup = "consumer_Fdc_Group2")
    public class SpringConsumer3 implements RocketMQListener<String> {
        @Override
        public void onMessage(String msg) {
            System.out.println("收到消息SpringConsumer3:" + msg);
        }
    }

    @Value("${rocketmq.producer.topic}")
    private String topic;

    /*同一个topic(myFdc)不同的消费者组(consumer_Fdc_Group,consumer_Fdc_Group1),发送的相同的消息报文可以被多个消费者接收*/
    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public String exportLog() throws Exception {
        IntStream.range(0,1).forEach(index->{
            IntStream.range(0,2).forEach(i -> springProducer.sendMsg("myFdc" + ":tag1", "myFdc我要测试下" + i + "火箭mq"));
        });
        //IntStream.range(0,2).forEach(i -> springProducer.sendMsg("myFdc" + ":tag1", "myFdc1我要测试下" + i + "火箭mq"));
        return "成功";
    }
古尘剑 2020-06-12
  • 打赏
  • 举报
回复 1
引用 9 楼 daydayupmyself 的回复:
[quote=引用 8 楼 弧失七 的回复:]
[quote=引用 7 楼 leonlau81 的回复:]
[quote=引用 6 楼 弧失七 的回复:]
[quote=引用 3 楼 muguobin 的回复:]
[quote=引用 2 楼 <span style="color:#4788C7">弧失七</span>的回复:][quote=引用 1 楼 本恒 的回复:]
会的,不同消费组订阅同一topic的消息,相当于是广播订阅,topic中的每条消息会分别被每个消费组进行消费

你这就是胡说八道了,用过rocketMq吗[/quote]<br />你用过吗?[/quote]
假设组a即group_a里面有订阅topic1的消费者,也有订阅topic2的消费者,
组b即group_b里面有订阅topic1的消费者,也有订阅topic3的消费者,组b订阅topic3的消费者能收到topic1的消息?原话:“topic中的每条消息会分别被每个消费组进行消费”,我想请问,topic和组有什么关系,为什么每条消息会分别被每个消费组进行消费[/quote]
你这个例子和楼主要问的不是一回事吧,楼主想问的是,假如group_a和group_b都订阅了topic1,现在往topic1里发了一条消息,group_a和group_b是都能消费这条消息,还是只能有一个能消费这条消息。答案应该是两个组都能消费到这条消息,2楼的回答没有问题啊。回到你的例子,假如topic1里有消息了,请问group_a和group_b里的两个消费者,是都能消费这条消息,还是只有一个能消费?(不明白你举的例子里的topic3是为了说明什么?)[/quote]答案是只要订阅了该topic,就都能消费。而不是每个组里的每个消费者都一定能消费,我说那么多只是为了反驳楼上的。[/quote]
首先声明,我没用过rocketmq,也没看过源码,根据我看到的博客写的你所说的这种消费方式,好像可能会带来一些问题,如有误,请轻喷。我看到一些博客上说同一个group下的每个consumer都要订阅相同的topic和tag,保证业务逻辑相同。[/quote]

你先要搞懂消费同一个主题是同一个系统(一个系统可以有多个消费服务,但是业务逻辑是一样的,消费组集群)还是不同的两个系统,消费之后处理的逻辑完全不一样,并不会出现你说的什么鬼,保证逻辑相同啥的,你同一个系统不同的逻辑,为啥要用一个group,那就应该是同一个主题两个不同的消费组,就等同于两个不同的系统。
跌撞江湖 2019-12-12
  • 打赏
  • 举报
回复
楼上各位遇到的情况,我都遇到了,我也疑惑了很久,也验证了各种情况。
飞天猿猴 2019-11-27
  • 打赏
  • 举报
回复
看到一个杠精
rry620 2019-10-25
  • 打赏
  • 举报
回复
必须可以 、不过要 设置为集群模式
daydayupmyself 2019-08-02
  • 打赏
  • 举报
回复 1
引用 10 楼 弧失七 的回复:
[quote=引用 9 楼 daydayupmyself 的回复:] [quote=引用 8 楼 弧失七 的回复:] [quote=引用 7 楼 leonlau81 的回复:] [quote=引用 6 楼 弧失七 的回复:] [quote=引用 3 楼 muguobin 的回复:] [quote=引用 2 楼 <span style="color:#4788C7">弧失七</span>的回复:][quote=引用 1 楼 本恒 的回复:] 会的,不同消费组订阅同一topic的消息,相当于是广播订阅,topic中的每条消息会分别被每个消费组进行消费
你这就是胡说八道了,用过rocketMq吗[/quote]<br />你用过吗?[/quote] 假设组a即group_a里面有订阅topic1的消费者,也有订阅topic2的消费者, 组b即group_b里面有订阅topic1的消费者,也有订阅topic3的消费者,组b订阅topic3的消费者能收到topic1的消息?原话:“topic中的每条消息会分别被每个消费组进行消费”,我想请问,topic和组有什么关系,为什么每条消息会分别被每个消费组进行消费[/quote] 你这个例子和楼主要问的不是一回事吧,楼主想问的是,假如group_a和group_b都订阅了topic1,现在往topic1里发了一条消息,group_a和group_b是都能消费这条消息,还是只能有一个能消费这条消息。答案应该是两个组都能消费到这条消息,2楼的回答没有问题啊。回到你的例子,假如topic1里有消息了,请问group_a和group_b里的两个消费者,是都能消费这条消息,还是只有一个能消费?(不明白你举的例子里的topic3是为了说明什么?)[/quote]答案是只要订阅了该topic,就都能消费。而不是每个组里的每个消费者都一定能消费,我说那么多只是为了反驳楼上的。[/quote] 首先声明,我没用过rocketmq,也没看过源码,根据我看到的博客写的你所说的这种消费方式,好像可能会带来一些问题,如有误,请轻喷。我看到一些博客上说同一个group下的每个consumer都要订阅相同的topic和tag,保证业务逻辑相同。[/quote] 你说的是对的,正常业务是这样的。[/quote] 谢谢解答,也帮忙验证了
弧失七 2019-08-02
  • 打赏
  • 举报
回复
引用 9 楼 daydayupmyself 的回复:
[quote=引用 8 楼 弧失七 的回复:] [quote=引用 7 楼 leonlau81 的回复:] [quote=引用 6 楼 弧失七 的回复:] [quote=引用 3 楼 muguobin 的回复:] [quote=引用 2 楼 <span style="color:#4788C7">弧失七</span>的回复:][quote=引用 1 楼 本恒 的回复:] 会的,不同消费组订阅同一topic的消息,相当于是广播订阅,topic中的每条消息会分别被每个消费组进行消费
你这就是胡说八道了,用过rocketMq吗[/quote]<br />你用过吗?[/quote] 假设组a即group_a里面有订阅topic1的消费者,也有订阅topic2的消费者, 组b即group_b里面有订阅topic1的消费者,也有订阅topic3的消费者,组b订阅topic3的消费者能收到topic1的消息?原话:“topic中的每条消息会分别被每个消费组进行消费”,我想请问,topic和组有什么关系,为什么每条消息会分别被每个消费组进行消费[/quote] 你这个例子和楼主要问的不是一回事吧,楼主想问的是,假如group_a和group_b都订阅了topic1,现在往topic1里发了一条消息,group_a和group_b是都能消费这条消息,还是只能有一个能消费这条消息。答案应该是两个组都能消费到这条消息,2楼的回答没有问题啊。回到你的例子,假如topic1里有消息了,请问group_a和group_b里的两个消费者,是都能消费这条消息,还是只有一个能消费?(不明白你举的例子里的topic3是为了说明什么?)[/quote]答案是只要订阅了该topic,就都能消费。而不是每个组里的每个消费者都一定能消费,我说那么多只是为了反驳楼上的。[/quote] 首先声明,我没用过rocketmq,也没看过源码,根据我看到的博客写的你所说的这种消费方式,好像可能会带来一些问题,如有误,请轻喷。我看到一些博客上说同一个group下的每个consumer都要订阅相同的topic和tag,保证业务逻辑相同。[/quote] 你说的是对的,正常业务是这样的。
daydayupmyself 2019-08-02
  • 打赏
  • 举报
回复
引用 8 楼 弧失七 的回复:
[quote=引用 7 楼 leonlau81 的回复:] [quote=引用 6 楼 弧失七 的回复:] [quote=引用 3 楼 muguobin 的回复:] [quote=引用 2 楼 <span style="color:#4788C7">弧失七</span>的回复:][quote=引用 1 楼 本恒 的回复:] 会的,不同消费组订阅同一topic的消息,相当于是广播订阅,topic中的每条消息会分别被每个消费组进行消费
你这就是胡说八道了,用过rocketMq吗[/quote]<br />你用过吗?[/quote] 假设组a即group_a里面有订阅topic1的消费者,也有订阅topic2的消费者, 组b即group_b里面有订阅topic1的消费者,也有订阅topic3的消费者,组b订阅topic3的消费者能收到topic1的消息?原话:“topic中的每条消息会分别被每个消费组进行消费”,我想请问,topic和组有什么关系,为什么每条消息会分别被每个消费组进行消费[/quote] 你这个例子和楼主要问的不是一回事吧,楼主想问的是,假如group_a和group_b都订阅了topic1,现在往topic1里发了一条消息,group_a和group_b是都能消费这条消息,还是只能有一个能消费这条消息。答案应该是两个组都能消费到这条消息,2楼的回答没有问题啊。回到你的例子,假如topic1里有消息了,请问group_a和group_b里的两个消费者,是都能消费这条消息,还是只有一个能消费?(不明白你举的例子里的topic3是为了说明什么?)[/quote]答案是只要订阅了该topic,就都能消费。而不是每个组里的每个消费者都一定能消费,我说那么多只是为了反驳楼上的。[/quote] 首先声明,我没用过rocketmq,也没看过源码,根据我看到的博客写的你所说的这种消费方式,好像可能会带来一些问题,如有误,请轻喷。我看到一些博客上说同一个group下的每个consumer都要订阅相同的topic和tag,保证业务逻辑相同。
弧失七 2019-08-01
  • 打赏
  • 举报
回复
引用 7 楼 leonlau81 的回复:
[quote=引用 6 楼 弧失七 的回复:] [quote=引用 3 楼 muguobin 的回复:] [quote=引用 2 楼 <span style="color:#4788C7">弧失七</span>的回复:][quote=引用 1 楼 本恒 的回复:] 会的,不同消费组订阅同一topic的消息,相当于是广播订阅,topic中的每条消息会分别被每个消费组进行消费
你这就是胡说八道了,用过rocketMq吗[/quote]<br />你用过吗?[/quote] 假设组a即group_a里面有订阅topic1的消费者,也有订阅topic2的消费者, 组b即group_b里面有订阅topic1的消费者,也有订阅topic3的消费者,组b订阅topic3的消费者能收到topic1的消息?原话:“topic中的每条消息会分别被每个消费组进行消费”,我想请问,topic和组有什么关系,为什么每条消息会分别被每个消费组进行消费[/quote] 你这个例子和楼主要问的不是一回事吧,楼主想问的是,假如group_a和group_b都订阅了topic1,现在往topic1里发了一条消息,group_a和group_b是都能消费这条消息,还是只能有一个能消费这条消息。答案应该是两个组都能消费到这条消息,2楼的回答没有问题啊。回到你的例子,假如topic1里有消息了,请问group_a和group_b里的两个消费者,是都能消费这条消息,还是只有一个能消费?(不明白你举的例子里的topic3是为了说明什么?)[/quote]答案是只要订阅了该topic,就都能消费。而不是每个组里的每个消费者都一定能消费,我说那么多只是为了反驳楼上的。
leonlau81 2019-08-01
  • 打赏
  • 举报
回复
引用 6 楼 弧失七 的回复:
[quote=引用 3 楼 muguobin 的回复:] [quote=引用 2 楼 <span style="color:#4788C7">弧失七</span>的回复:][quote=引用 1 楼 本恒 的回复:] 会的,不同消费组订阅同一topic的消息,相当于是广播订阅,topic中的每条消息会分别被每个消费组进行消费
你这就是胡说八道了,用过rocketMq吗[/quote]<br />你用过吗?[/quote] 假设组a即group_a里面有订阅topic1的消费者,也有订阅topic2的消费者, 组b即group_b里面有订阅topic1的消费者,也有订阅topic3的消费者,组b订阅topic3的消费者能收到topic1的消息?原话:“topic中的每条消息会分别被每个消费组进行消费”,我想请问,topic和组有什么关系,为什么每条消息会分别被每个消费组进行消费[/quote] 你这个例子和楼主要问的不是一回事吧,楼主想问的是,假如group_a和group_b都订阅了topic1,现在往topic1里发了一条消息,group_a和group_b是都能消费这条消息,还是只能有一个能消费这条消息。答案应该是两个组都能消费到这条消息,2楼的回答没有问题啊。回到你的例子,假如topic1里有消息了,请问group_a和group_b里的两个消费者,是都能消费这条消息,还是只有一个能消费?(不明白你举的例子里的topic3是为了说明什么?)
弧失七 2019-07-25
  • 打赏
  • 举报
回复
引用 3 楼 muguobin 的回复:
[quote=引用 2 楼 <span style="color:#4788C7">弧失七</span>的回复:][quote=引用 1 楼 本恒 的回复:] 会的,不同消费组订阅同一topic的消息,相当于是广播订阅,topic中的每条消息会分别被每个消费组进行消费
你这就是胡说八道了,用过rocketMq吗[/quote]<br />你用过吗?[/quote] 假设组a即group_a里面有订阅topic1的消费者,也有订阅topic2的消费者, 组b即group_b里面有订阅topic1的消费者,也有订阅topic3的消费者,组b订阅topic3的消费者能收到topic1的消息?原话:“topic中的每条消息会分别被每个消费组进行消费”,我想请问,topic和组有什么关系,为什么每条消息会分别被每个消费组进行消费
弧失七 2019-07-25
  • 打赏
  • 举报
回复
引用 3 楼 muguobin 的回复:
[quote=引用 2 楼 <span style="color:#4788C7">弧失七</span>的回复:][quote=引用 1 楼 本恒 的回复:] 会的,不同消费组订阅同一topic的消息,相当于是广播订阅,topic中的每条消息会分别被每个消费组进行消费
你这就是胡说八道了,用过rocketMq吗[/quote]<br />你用过吗?[/quote] 用过啊,怎么了,我不知道什么配置可以达到贴主的效果,但我知道楼上说的绝对是错的。什么相当于广播订阅,订阅是决定于具体的消费者的,跟消费组有什么关系?
johnjoe.xie 2019-07-15
  • 打赏
  • 举报
回复 4
https://help.aliyun.com/document_detail/43163.html 希望能有所帮助!
muguobin 2019-07-12
  • 打赏
  • 举报
回复
引用 2 楼 <span style="color:#4788C7">弧失七</span>的回复:
[quote=引用 1 楼 本恒 的回复:] 会的,不同消费组订阅同一topic的消息,相当于是广播订阅,topic中的每条消息会分别被每个消费组进行消费
你这就是胡说八道了,用过rocketMq吗[/quote]<br />你用过吗?
弧失七 2019-06-18
  • 打赏
  • 举报
回复
引用 1 楼 本恒 的回复:
会的,不同消费组订阅同一topic的消息,相当于是广播订阅,topic中的每条消息会分别被每个消费组进行消费
你这就是胡说八道了,用过rocketMq吗
本恒 2019-06-15
  • 打赏
  • 举报
回复 1
会的,不同消费组订阅同一topic的消息,相当于是广播订阅,topic中的每条消息会分别被每个消费组进行消费
# Kafka 消息队列 (KRaft模式) ## 课程介绍  本课程使用官网文档、源码、物理文件分析等方式带大家入门 KRaft 模式的 Apache Kafka。 Kafka 是一个消息队列,也称作事件流平台、消息系统、消息中间件、消息引擎、消息发布订阅系统等。 本课程主要内容为: 1. 环境搭建   - 介绍 Apache Kafka   - 下载安装 JDK   - 下载安装 Kafka   - 修改 PATH 环境变量2. 单台机器集群(KRaft)[1]   - 介绍 Kafka 的 KRaft 模式   - 介绍 controller 和 broker   - 修改 controller 和 broker 配置3. 单台机器集群(KRaft)[2]   - 使用 kafka-storage.sh 格式化数据目录   - 启动 controller,并分析启动日志   - 启动 broker,并分析启动日志   - 使用 kafka-metadata-shell.sh 分析集群元数据4. Broker配置补充   - 补充 listeners、advertised.listeners 等配置   - 使用 kafka-metadata-shell.sh 验证配置修改   - 配置支持内网、外网访问的 broker 配置   - 使用 kafka-console-producer.sh 验证配置修改5. 集群测试   - 介绍消息主题 topic   - 使用 kafka-topics.sh 创建主题   - 使用 kafka-metadata-shell.sh 分析元数据   - 使用 kafka-console-producer.sh 生产消息   - 使用 kafka-console-consumer.sh 消费消息   - 分析 broker 消息数据文件6. 可视化工具   - 介绍 Kafdrop   - 下载、安装、运行 Kafdrop   - 创建主题、删除主题、查看消息数据等   - 介绍 Kafka 主题删除过程7. 三台机器集群(KRaft)   - 配置 controller 和 broker   - 格式化数据目录   - 启动 controller 和 broker,并分析启动日志   - 分析集群元数据   - 关闭 controller 和 broker8. 主题 分区 副本   - 介绍主题 topic   - 介绍分区 partition   - 介绍副本 replica,介绍 leader follower   - 分析 broker 数据文件   - 分析主题、分区、副本相关的集群元数据   - 使用 Java 代码指定分区生产消息9. 生产者   - 分析生产者配置    - 分析 Kafka 源码 KafkaConsumerProducerDemo 中的生产者代码   - 使用 Java 代码生产消息,实现消息同步发送、异步发送   - 分析消息顺序问题    - 分析生产者序列化器 StringSerializer、分区器等源码10. 消费消费组    - 介绍消费配置    - 分析 Kafka 源码 KafkaConsumerProducerDemo 中的消费代码    - 使用 Java 代码消费消息    - 介绍并演示消费组 consumer group    - 介绍并演示消费再平衡过程 consumer rebalance    - 介绍并演示自动重置消费位移    - 分析消费反序列化器 StringDeserializer、控制台消费 kafka.tools.ConsoleConsumer 等源码 ## 相关截图     

20,811

社区成员

发帖
与我相关
我的任务
社区描述
Hadoop生态大数据交流社区,致力于有Hadoop,hive,Spark,Hbase,Flink,ClickHouse,Kafka,数据仓库,大数据集群运维技术分享和交流等。致力于收集优质的博客
社区管理员
  • 分布式计算/Hadoop社区
  • 涤生大数据
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧