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

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

  • 保障消息的成功发出
  • 保障MQ节点的成功接收
  • 发送端收到MQ节点(broke)确认应答
  • 完善的消息补偿机制

消息落库,对消息状态进行打标记

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

Q:事务?保证数据源一致   tcc  用补偿机制

设定一个time lock  分布式定时任务  (可能出现重复抓取任务)  保证统一个时间点 只有一个任务执行

定时任务会造成的问题是:时间临界问题,就是有消息本来就可以ACK,但是你给我重新发一次,导致网络资源以及io资源的浪费。这就要规定超时大小  retry send

极端问题:routingkey错误导致,发送失败问题。所以就要限制重发次数的限制了。

记录下来  然后再走补偿机制。

缺点是:

最少有一次的数据库写入操作,以及更新操作,甚至有两次写入操作。

所以可能在高并发的场景下可能会遇到瓶颈。

优化方案就是,只需要对业务进行数据库落地处理,对消息不需要进行落地处理。

 

 

 

消息的延迟投递,做二次确认,回调检查(非100,只能人工补偿,定时任务)

目的是减少数据库的操作

 

一定要对业务消息先入库,然后再进行消息的发送,互联网大厂不加任何的事务,事务可能会造成事务瓶颈。

 

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值