Skip to content

通过延时队列实现检查订单是否已经超期,自动取消订单的功能 #275

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 5, 2019

Conversation

zhjdotxmsme
Copy link
Contributor

延时队列检查订单是否已经超期

目前通过定时检查订单未付款情况,如果超时自动取消订单,这种实现的问题就是无法准确时间内取消订单。通过java自带的延时队列,可以准确的实现取消订单的功能,当然如果允许Redis,或者mq也可以在分布式的环境中实现统一的延时队列。项目中定时任务都可以使用延时队列实现准时的任务操作。

@linlinjava
Copy link
Owner

谢谢,会看一下的。定时查询的确不妥当。

@spinachomes
Copy link

这个重启 queue不就清空了吗

@zhjdotxmsme
Copy link
Contributor Author

zhjdotxmsme commented Oct 21, 2019

这个重启 queue不就清空了吗

可以增加一些补偿机制,比如同时存进db中,在延时任务触发的时候,处理成功再删除db的数据,如果你说的这种情况,在重启的时候再重建队列。
当然最好还是用中间件保证不丢失,因为存db还会涉及数据同步的事务问题。

@linlinjava
Copy link
Owner

这里采用简单的queue + 系统重启查询数据库建立queue即可。
后面会参考这里代码做一下

@linlinjava linlinjava merged commit e95948b into linlinjava:master Nov 5, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants