如何通过本地化事件正确实现微服务内部强一致性,事件总线跨微服务间最终一致性 (2)

Subscriber 回滚本地事务
该场景不存在任何问题,因为 Publisher 会通过 事件重试 再次发布 预发布 状态的事件 。

4.4 问题场景三:Publisher 端Ok,Subscriber 消费出错

Publisher 端处理顺利

Subscriber 消费失败,回滚本地事务,此时 SubscribeEvent 未存储到本地仓库
该场景存在的问题:
Publisher 发送成功,并且本地 PublishEvent 事件为已发布,那么意味着从Publisher端是无法知道Subscriber消费失败需要重新消费
解决方案:

通过检测 PublishEvent & SubscribeEvent 获得需要 事件重试PublishEvent

PublishEvent 重新发布Subscriber

5. 通过Nuget安装组件支持以上编程模型 Install-Package SmartEventBus.RabbitMQImpl Install-Package SmartEventBus.Repository 6. ORM:SmartSql 广而告之

SmartSql = Dapper + MyBatis + Cache(Memory | Redis) + ZooKeeper + R/W Splitting + ......

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjswy.html