开发者社区> 问答> 正文

超时消息消费如何理解?

超时消息消费如何理解?

展开
收起
游客zvexcvxjsyxmm 2022-03-29 14:35:12 429 0
来自:大淘宝技术
1 条回答
写回答
取消 提交回答
  • 每台机器将启动多个Woker进行超时消息消费,Woker即表示线程,定时消息被存储到Redis的多个Slot中,因此需要zookeeper维护集群中Woker与slot的关系,一个Slot只分配给一个Woker进行消费,一个Woker可以消费多个Slot。 Woker与Slot的关系在每台机器启动与停止时重新分配,超时消息消费集群监听了zookeeper节点的变化。 Woker与Slot关系确定后,Woker则循环不断地从Redis拉取订阅的Slot中的超时消息。 在StoreQueue存储设计中说明了定时消息存储时采用Sorted S et结构,采用定时时间actionTime作为分数,因此定时消息按照时间大小存储在Sorted Set中。 因此在拉取超时消息进行只需采用Redis命令ZRANGEBYSCORE弹出分数小于当前时间戳的一条消息。 为了保证系统的可用性,还需要考虑保证定时消息至少被消费一次以及消费的重试次数。答复内容摘自《2021技术人的百宝黑皮书》,这本电子书收录开发者藏经阁 下载连接:https://developer.aliyun.com/ebook/download/7436

    2022-03-29 23:28:07
    赞同 展开评论 打赏
问答地址:
来源圈子
更多
收录在圈子:
+ 订阅
问答排行榜
最热
最新

相关电子书

更多
Rocket MQ 使用排查指南 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载