一、业务场景:

通过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存储压力大,可能造成消息积压
image.png
失败重试间隔时间:
1m 5m 30m 30m 1h 2h x11
共24小时6分钟