zoukankan      html  css  js  c++  java
  • 深入理解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的源码!

  • 相关阅读:
    Webpack-simple cross-env 不是内部或外部命令问题处理
    Webstorm快捷键整理
    Maven导入ojdbc14.jar和ojdbc6.jar
    spring配置datasource三种方式 数据库连接池
    oracle存储过程中使用execute immediate执行sql报ora-01031权限不足的问题
    Java String内存释放
    Sublime Text 3 添加到右键菜单
    Oracle date 和 timestamp 区别
    查看JVM内存使用情况
    bzoj1513【POI2006】Tet-Tetris 3D
  • 原文地址:https://www.cnblogs.com/guoyu1/p/11677766.html
Copyright © 2011-2022 走看看