在固定时间后对实体执行操作
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 执行的操作 )(代码片段