深入理解RocketMQ的消费者组、队列、Broker,Topic

1、遇到的问题:上测试环境,上次描述的鸟问题又出现了,就是生产者发3条数据,我这边只能收到1条数据。

2、问题解决:

  (1)去控制台看我的消费者启动情况,貌似没什么问题

  (2)去测试服务器里看日志信息:只有入库的那条是真的接收到了,其余压根就没有接收到,排除入库过程的代码问题。到此,问题只锁定在我的consumer根本没有接收到丢失的那两条消息。

   (3)仔细思考一下,发现了问题的根源,看图一的控制台信息,可以发现,生产者默认给我分配了四个队列,但是我的消费者只用了两个队列,这就是和那天的问题一样啊,但是看消费终端的id只有我的服务器在我的消费者组里,没有其他的服务器啊。而且我的topic下面的四个队列中,只有一种类型的消费者,为什么另两个队列硬是分配不到呢。

3、问题答案:

         仔细看了我的内网包,发现了一个问题,我自己的程序中包中,有人在跟我使用同一个消费者组,虽然消费的topic不同,而且那货的topic一直在服务器里报错。我将我的消费者组名改掉了,问题消失了。

 

 

 ********但是,不由得发问:

1、为什么同一个group,topic不同,它还要占用的我消息队列?

2、同一个消费者组下,队列是怎么分配的?

3、broker和队列之间有什么联系?

4、同一group,不同的消费者他的broker是怎么分配的?

 

  要解决上诉问题,必须要深入理解RocketMQ的执行流程,查看MQ的源码!

 

posted @ 2019-10-15 15:06  guoyu1  阅读(22392)  评论(2编辑  收藏  举报