消息如何保障100%的投递成功?
什么是生产端的可靠性投递?
保障消息的成功发出
保障MQ节点的成功接收
发送端收到MQ节点(Broker)确认应答
完善的消息进行补偿机制(如网络问题没有返回确认应答)
生产端的可靠性投递(一)
BAT/TMD互联网大厂的解决方案:(根据业务和并发量来选择)
消息落库,对消息状态进行打标(进行变更消息状态)
消息的延迟投递,做二次确认,回调检查
第一步进行数据的落库存储(持久化成功)保存状态,第二步发送消息,Broker收到消息,
第三步将受到的结果应答给生产端,生产端异步监听消费者返回的响应,
数据刷去出来更新消息的状态,表示消息百分百成功
发送应答如果网络闪断的话,消息状态永远是初始状态,
设置规定,分布式任务用来保证同一个时间点抓取消息,消息超时之后还是初始状态,
将消息抽取出来,继续投递。
生产端可靠性投递(二):
保障MQ如果第一种可靠性投递,在高并发场景下是否合适?
消息的延迟投递,做二次确认,回调检查
先持久化数据在发送消息