在固定时间后对实体执行操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在固定时间后对实体执行操作相关的知识,希望对你有一定的参考价值。

在我的Spring项目中,我有一个实体Customer。现在,一旦我们得到一个新客户,我们将其保留在我们的系统中,并且在一小时之后,我想检查Customer是否已经进行了任何购买。如果是,我会采取一些行动。如果不是,其他一些。

我考虑了两种策略,1)在客户持久化时启动事件。然后让事件监听器线程休眠一小时。我相信这将是一个非常糟糕的方法来处理这个问题。

2)对于自注册一小时后已经过去的客户,每隔一段时间进行一次cron检查。但是,我认为要准确起来将非常困难。我必须每分钟运行一次这不会很棒的cron。

有任何想法吗?

答案

您可以使用'ScheduledThreadPoolExecutor',根据javadoc:

ThreadPoolExecutor,可以额外调度命令在给定延迟后运行,或定期执行

在您的情况下,创建客户时,您可以使用“计划”方法在1小时后唤醒,然后执行所需的活动。如果您希望定期执行这些活动,也可以使用此方法。

另一答案

我相信每分钟运行cron并不是那么糟糕,你会在一分钟内处理多少客户?

另一答案

虽然不确定为什么您不能在注册客户进行任何购买时使用该事件,即当特定注册客户购买时您可以采取内联行动然后进行。

您描述了两种策略都可以工作,但我更喜欢运行可以明确配置的cron作业。这样就可以避免维护线程的开销。如果正确配置cron作业计时并允许单个作业一次运行,我没有看到任何问题。请记住,cron作业用于批处理而不是处理事件。

以上是关于在固定时间后对实体执行操作的主要内容,如果未能解决你的问题,请参考以下文章

线程学习知识点总结

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

条纹,验证卡并仅在操作后对其进行收费

Android 插件化VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )(代码片段

c_cpp 加载源图像固定用法(代码片段,不全)