(四)消息队列实现分布式事务和如何检测消息是否丢失

消息队列实现分布式事务

在生产阶段,首先给队列发送一个半消息,半消息是一分全量消息,只是在确认之前,不会被消费者发现,第二步实现本地事务,根据本地事务决定队列上的消息提交还是回滚,在本地事务完成之后给队列发送的消息提交发生问题,队列没有收到提交或者回滚的命令,kafka会直接抛出异常让用户自己处理,rocketmq有自己的消息反查机制,它会轮询去查哪些消息还没有得到确认,回去调用户实现的一个反查接口,来处理这条消息的状态。

如何检测消息是否丢失

大部分消息队列都会提供拦截器机制,利用队列的有序性,在拦截器里给每条消息前面加一个自增的标志,在消费是检测标志是否是连续的就可以查出哪条消息丢失了。
对于主题来说,保证不了严格的有序性,那么在传递消息上要设置给那个队列上发送消息,检查这个对应队列的有序性,如果有多个生产者对应一个队列,那么需要带上生产者的标志,检查时检查对应生产者的标志顺序。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值