开发者社区> 问答> 正文

RMQ如何实现至少消费一次模式?

已解决

RMQ如何实现至少消费一次模式?

展开
收起
游客lmkkns5ck6auu 2022-10-11 17:27:01 280 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    RMQ基于二阶段提交的思想来实现至少消费一次的模式。RMQ存储设计中PrepareQueue的作用就是用来冻结资源并记录事务日志,消费者端既是参与者也是协调者。

    •第一个准备阶段,消费者端通过执行Lua脚本从StoreQueue中Pop消息并存储到PrepareQueue,同时消息传输到消费者端,消费者端消费该消息; •第二个提交阶段,消费者端根据消费结果是否成功协调消息队列服务是提交还是回滚,如果消费成功则提交事务,该消息从PrepareQueue中删除,如果消费失败则回滚事务,消费者端将该消息从PrepareQueue移动到StoreQueue,如果因为各种异常导致PrepareQueue中消息滞留超时,超时后将自动执行回滚操作。以上内容摘自《阿里开发者手册-Redis专题》电子书,点击https://developer.aliyun.com/ebook/download/7770 可下载完整版

    2022-10-12 23:10:28
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
阿里云开发者社区官方技术圈,用户产品功能发布、用户反馈收集等。
问答排行榜
最热
最新

相关电子书

更多
消息队列 Kafka 版差异化特性 立即下载
基于RocketMQ Connect 构建全新数据流转处理平 立即下载
万亿级数据洪峰下的消息引擎-Apache RocketMQ 立即下载