场景
商品库存
兑换码发放
幂等 推模型 拉模型 消息偏移量
是否引入中间件,分如下三种消息传递模式
业务系统A ------>弱消息队列(分布式)-------> 业务系统B
业务系统A ------->强消息队列(支持事务)--------->业务系统B
业务系统A-------->业务系统B
------->表示消息通道,通道存在如下两种传递消息模式
1、上游定时推,并维护推偏移
幂等推成功后更新推偏移
2、下游定时拉,并维护拉偏移
幂等处理成功后更新拉偏移
kafka消息消费者是基于拉模型的
生产者应用需自己维护推偏移
ActiveMq消息中间件基于长连接推消息给消费者
弱消息队列和业务系统不通过中间件自行传递消息两种模式下,上游系统需在本地事务中完成业务操作以及保存消息在本地数据库中,由定时任务推消息至消息队列中间件或下游业务系统,或者下游业务系统主动拉上游系统消息,
支持事务的强消息队列,可直接基于XA分布式事务完成业务操作同时发布消息到消息队列中,从而无需维护推偏移,下游系统亦可借助消息队列本身的事务支持,在XA事务中完成消息的消费,无需提供幂等操作和维护拉偏移