更新时间:2022-02-21 GMT+08:00
消息较少时为什么消费不到指定数量的消息?
- 全局有序的普通队列为单分区,每次消费请求都能获取指定数量的消息,除非队列中消息数少于指定的消费数量。
- 其他队列采用了多分区设计方式,实现消息分布式处理,提升消费并发度,可同时处理同一个消费组的多个消费请求。同一个消费组中单个请求只能消费单个分区中的消息,以避免跨分区访问和管理带来性能损失。因此当队列中可消费消息数量较少时,可能出现单次消费获取不到指定数量的消息数的情况(即使队列可消费消息数大于指定数量)。
如图1所示,队列中共有12条消息,分布式存储在3个Partition中。当消费请求指定消费数量为10时,由于单次只能消费一个分区的消息,比如Partition 0,则该请求只能消费到4条消息,然后依次消费Partition 1和Partition 2中的消息。