rocketmq消费端流量控制

rocketmq定义里一个快照ProcessQueue,每个MessageQueue都有一个对应的ProcessQueue对象来保存自身的快照。
里面是一个TreeMap和一个读写锁,树以MessageQueue的offset为key,以消息内容的引用为value,保存来所有从MessageQueue获取的但是未被处理的消息.
读写锁控制多线程对树内对象的并发访问
两种情况会限流,限流的做法是放弃本次拉取消息的动作,并且这个队列的下一次拉取任务将在50毫秒后才加入到拉取任务队列。
1:当前的ProcessQueue正在处理的消息数量>1000,1000是字段pullThresholdForQueue
2:队列中最大最小偏移量差距>2000,这个是为了避免因为一条消息du se

你可能感兴趣的:(rocketMQ)