美文网首页
可靠消息的最终一致性

可靠消息的最终一致性

作者: MisAutumn | 来源:发表于2020-07-10 13:22 被阅读0次

    事务发起方执行完事务后发送一条消息,事务的参与方一定能够接收到消息并处理事务成功。强调最终一致。

    1. 本地事务和消息发送的原子性
      事务发起方在本地事务执行成功后消息必须发出,要不就都失败。
    2. 事务参与方接受消息的可靠性
      事务参与方必须能接收到消息,接收失败消息要被重复发送
    3. 消息重复消费问题
      要实现事务参与方的方法幂等性

    解决方案:

    1. 本地消息表+定时任务 (交易)
      通过本地事务保证数据操作和消息的一致性,然后通过定时任务将消息发送给消息中间件,确认消息发送成功后删除消息。

    a.数据操作和写入消息日志表在本地事务中具有一致性(业务+日志)
    b.启动独立线程,定时任务扫描日志并发送给消息中间件,收到成功反馈后删除日志
    c.消费消息可使用MQ的ack机制,消费方接收到消息并处理完成后发送确认,否则MQ将不断重复发送消息

    1. RocketMQ事务消息方案
    1. 最大努力通知 (交易后的通知)

    目标:发起通知方尽最大努力将业务结果发给接收通知方。
    具体:
    a.有消息重发机制
    b.有校对机制:如果尽最大努力也没通知到,或者接收方消费后要重复消费,此时可由接收方主动向通知方查询,通知方需要提供查询接口。

    视频

    相关文章

      网友评论

          本文标题:可靠消息的最终一致性

          本文链接:https://www.haomeiwen.com/subject/xgygqktx.html