2020.8.7
正文
今日,本人将代码完善的差不多了。
1.本人的代码提供了一个接口url,被调用时,先从数据库select出待推送的数据条数,然后用for循环,调用另一个接口(别人写好的url),并update数据库中该条数据的状态标志为已推送;这样就实现了给用户推送消息的功能。
2.其中,还有一个最大重试次数的逻辑,如果出现推送未成功的数据,则sleep指定时间后,重新调用接口发起推送。
3.然后就是昨天写的逻辑了,当该线程正在处理时,如果本人的接口再次被调用,也不会重复执行该线程。
自测结果如下:
select与update操作100条数据(每条数据中有1000个用户),发起100次http请求;也就是10万个消息,用时【10秒】;
select与update操作1000条数据(每条数据中有1000个用户),发起1000次http请求;也就是100万个消息,用时【2分】;
select与update操作10000条数据(每条数据中有1000个用户),发起10000次http请求;也就是100万个消息,用时【22分】;
考虑到实际情况,一般一次最多给100万个用户每人推送一条消息就够了,也就是100万个消息,【2分】就执行完了,还可以接受。
-----------------------------------------------------
后记
虽然是大批量推送项目,不过总感觉本人负责的模块不是很复杂,用常规方法就写完了,没什么特殊处理。
如果推送到一半出错,重新调用一次本人的接口就行了(本人还有发现推送失败的任务后重新推送的逻辑在)。
总的来说,开发用时2天,完善用时2天,自测用时1天。
下周开始联调,到时候看看有没有其余问题吧。