RocketMQ Runtime ServiceThread的设计理念: www.jianshu.com/p/2fb3293ed…
简介
CountDownLatch2是RocketMq实现的一个工具类,与CountDownLatch 逻辑一致;
增加了reset方法;
CountDown2用来做什么
配合RebalanceService类中使用,间隔20s进行负载均衡、停止ServiceThread、或立即停止阻塞
-
#await: RebalanceService#waitForRunning中使用,如果不调用#countDown,默认阻塞20s
-
#countdown调用
- ServiceThread#stop,stop=true,ServiceThread停止工作
- ServiceThread#shutdown,stop=true,ServiceThread停止工作
- ServiceThread#weakup,停止20s的阻塞
问题
#reset是为了提供什么功能
重发使用同一个创建出来的CountDownLatch2,每次重置AQS的state即可;
ServiceThread是什么
在rocketmq中,订阅了某个topic,就相当于订阅了这个topic的所有消息队列,MessageQueue,而MessageQueue是可能动态变化的,消费者组内的消费者数量也可能动态变化。所以,就需要一个组件来完成这种消费队列在消费者间的重新平衡。这个组件就是RebalanceService。 原文链接:blog.csdn.net/yuxiuzhiai/…