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

非完美主义者 2018-09-11 03:28:35
问题是这样的,RocketMQ中的消息,一个消费者消费后就没有了。 但如果是两个不同的消费组订阅了相同topic的消息,其中一组的消费者取走消息后,另一组的消费者还能再取到这条消息吗?
...全文
15168 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中的每条消息会分别被每个消费组进行消费

20,811

社区成员

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

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