定时器问题-定时上架商品的解决方案
问题描述
在新增商品的时候,可以给商品指定一个自动上架时间(加入这边我们到了时间只改变商品状态好了)。有没有什么好的解决方案啊?
最暴力的方法就是放进一个队列,每隔一定时间(1秒)轮询一次。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
在新增商品的时候,可以给商品指定一个自动上架时间(加入这边我们到了时间只改变商品状态好了)。有没有什么好的解决方案啊?
最暴力的方法就是放进一个队列,每隔一定时间(1秒)轮询一次。。。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
上架时间最好在做成可配置,然后存储在数据库,如果时间够了就直接显示,如果没到就通过定时器轮询
定时最小粒度不是一分钟吗
这方法不暴力啊,通常也确实就是这么做的,有一个单独的后台任务隔一段时间扫一下有没有定时上线的到点儿了。
至于这个后台任务你是死循环,还是 crontab / 计划任务;数据源是直接扫表还是单独有个队列。这种涉及具体实现问题的,随便,看你怎么维护方便。
还可以配合支持延时消息的消息队列,比如 RabbitMQ 之类的。
完全不建议在查询时判断一下有没有到点儿的、并给它设置成上线的这种方案。一是违反单一职责,查询就应该只管查询,到点儿了设置成上线应该是给别人做;二是查询接口一般是访问量最大的,逻辑不应该太复杂,不好优化。