当前位置: 代码迷 >> 综合 >> 异步接口失败后推送的次数,时间间隔怎么控制
  详细解决方案

异步接口失败后推送的次数,时间间隔怎么控制

热度:45   发布时间:2023-10-16 21:04:58.0

我们弄过微信或者支付宝的文档,都会涉及异步推送接口,当失败的时候,他们接口间隔多长时间再推送一次,直到24小时后不再推送。大家好奇他们是怎么做。注意:第一次触发不需要定时任务的,只是失败之后,后面的推送交给队列处理。

案例、一般情况下,25 小时以内完成 8 次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h);

把上面兑换 秒数 4*60s ,10*60s .........

方式1、crontab定时任务执行 + redis队列

假设 crontab 定时 5s 执行一次

推送失败后,就把下次要执行的时间存起来,

$redis->get($key);

若是存在,证明还不到要执行的时间,跳过;否则执行,

$redis->lpop($key)

,执行成功 一般返回 success,接收到后,就

$redis->delete($key);

还是失败,就把一下要执行的时间再存起来

$redis->setex($key,setex,4*60);

同时把数据放回队列

$redis->lpush();

当$key 大于某个值,就证明的已经执行了最后一次了,若是还是失败,不需要保存下一次的执行的数据了

set 或者setex

这两者的区别,百度一下就知道。

  相关解决方案