一、业务场景:
通过sdk业务操作完成后,回调通知三方服务
二、考虑问题:
主要是失败重试,重试时间间隔,数据量大的时候并发问题
相关调研:
微信支付通知:
在通知一直不成功的情况下,微信总共会发起多次通知,通知频率为15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h - 总计 24h4m
mq延迟消息:
1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h
三、解决方案
1.数据库记录业务操作,定时扫表重试
可能会造成数据库压力大,处理过于集中,处理延时问题
2.基于mq处理,业务操作成功后或处理失败发延时消息,消费即可,超过次数不再发送消息
主要问题是对于rocketmq存储压力大,可能造成消息积压
失败重试间隔时间:
1m 5m 30m 30m 1h 2h x11
共24小时6分钟