我控制器里面,设置 5 分钟后发送邮件,但是用户如果短时间请求几次,那就会发送几次邮件,我希望用户请求,五分钟后发送邮件,在这五分钟内,如果用户再次请求,那么前一次发送的邮件将会取消,在第二次请求之后五分钟再发送邮件,怎么实现比较好呢
发的时候存了 redis 里,加过期时间,每次发的时候都有判断有没有这个 key,有就不发,没有就发,并刷新 key。 或者利用 rate limit 也能做。
放到 sidekiq 里,延时 5 分钟,存 jid,5 分钟内,再通过 jid 把这个待处理任务删掉。加个发不发字段也行
谢谢
谢谢啊