RabbitMQ消息如何100%投递成功(六)

消息如何保障100%的投递成功?

  什么是生产端的可靠性投递?

    保障消息的成功发出

    保障MQ节点的成功接收

    发送端收到MQ节点(Broker)确认应答

    完善的消息进行补偿机制(如网络问题没有返回确认应答)

 

  生产端的可靠性投递(一)

    BAT/TMD互联网大厂的解决方案:(根据业务和并发量来选择)

      消息落库,对消息状态进行打标(进行变更消息状态)

      消息的延迟投递,做二次确认,回调检查

        第一步进行数据的落库存储(持久化成功)保存状态,第二步发送消息,Broker收到消息,

        第三步将受到的结果应答给生产端,生产端异步监听消费者返回的响应,

        数据刷去出来更新消息的状态,表示消息百分百成功

        发送应答如果网络闪断的话,消息状态永远是初始状态,

        设置规定,分布式任务用来保证同一个时间点抓取消息,消息超时之后还是初始状态,

        将消息抽取出来,继续投递。

  

  生产端可靠性投递(二):

    保障MQ如果第一种可靠性投递,在高并发场景下是否合适?

    消息的延迟投递,做二次确认,回调检查

    先持久化数据在发送消息

 

posted @ 2019-07-11 10:55  鹿小框  阅读(1170)  评论(0编辑  收藏  举报