开发者社区> 问答> 正文

RabbitMQ保证投放消息不丢失的具体步骤是什么?

RabbitMQ保证投放消息不丢失的具体步骤是什么?

展开
收起
真的很搞笑 2021-10-28 20:58:59 459 0
1 条回答
写回答
取消 提交回答
  • (1)先将消息放入生产者Redis(此时消息的状态为未投放),再放入队列 (2)根据confirm(ReturnCallback和ConfirmCallback)的结果来确定消息是否投递成功, 投递成功的,修改生产者redis中消息的投递状态为已投递 投递失败的消息将会放入失败的Redis,并从生产者Redis中删除,由定时任务定期扫描并重新投递

    (3)生产者Redis定时任务 生产者Redis定时任务专门扫描生产者Redis中存放了一定时间,但是状态还是未投放的消息 此消息会被认为已经投递,但是没有任何反馈结果(由于不可知因素,导致没有ReturnCallback,也没有ConfirmCallback), 此类消息被扫描到后,会放入失败的Redis,并从生产者Redis中删除,由定时任务定期扫描并重新投递 (4)还需要一个专门的定时任务扫描生产者Redis中存放了很久,仍然未消费的数据(状态为已投递),此类消息被扫描到后,会放入失败的Redis,并从生产者Redis中删除,由定时任务定期扫描并重新投递 (5)扫描失败的Redis的定时任务都遵循一条原则,一条消息最多被重新投递三次,若投递了三次仍然失败,则记录日志,记录到数据库,不会再投递,需要人工干预处理

    2021-10-28 20:59:13
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
RocketMQ Client-GO 介绍 立即下载
RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载
基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台 立即下载