作者回复: 感谢!
作者回复: 感谢!
作者回复: 感谢!
作者回复: 题目的难度还是有点儿大的,如果能全做对就很厉害了!
作者回复: 感谢!
作者回复: 感谢!
作者回复: 感谢!
作者回复: 感谢!
作者回复: 感谢!
作者回复: 感谢!
作者回复: 感谢!只要能给大家带来一些收获就好。
作者回复: 1. 你可以看一下,更新lastPullTimestamp的时机并不是拉取成功后才更新,而是发送拉取消息请求之前就更新。所以即使没有消息,也会更新这个时间。
2. 只有一种情况不会更新这个时间,它在方法DefaultMQPushConsumerImpl#pullMessage更新lastPullTimestamp之前,判断了一下这个processQueue是否还可用(processQueue.isDropped()),如果不可用就直接返回了,不更新这个时间。
3.造成客户端认为队列不可用的原因很多,比如拉到了错误的元数据等等,具体你得分析是什么原因。
作者回复: 感谢!看到你能有收获我也很开心。