如何根据虚拟管理时钟安排作业?

时间:2016-02-09 10:22:23

标签: java spring batch-processing scheduling scheduler

我正在研究一个分析来自连接对象的事件流的Spring Web应用程序。

此流程不是实时的(数据每隔X分钟由数据包报告),但事件按检测时间排序。

我想在给定时间内在我的流程中的两个事件之间触发作业。

换句话说,我喜欢像Quartz或其他类似的lib,它允许我使用一个虚拟时钟(系统除外),它以与我的事件流相同的速度移动。

在我的使用案例中,我有室内存在和开门。

在其中一种情况下,我想在开门后开始计算存在30次,并在开门后5分钟停止计数。

问题是,我已经在开门后30秒收到了活动,也许我会在开场后10分钟收到活动。

编辑:我不想根据服务器时间安排任务,但我希望能够自己管理时钟。

示例:我收到一个事件,我将虚拟时钟更改为事件创建日期,如果任务在新虚拟时钟之前安排,则会启动它。

3 个答案:

答案 0 :(得分:0)

您可以尝试使用Spring Scheduler(如果我正确理解您想要实现的目标):Spring Scheduler Tutorial

答案 1 :(得分:0)

这听起来像java.util.Timer这样简单的事情可以完成这项工作。 当事件进入时,创建一个30秒的计时器。此计时器将触发计数存在的开始,并将创建一个4.5分钟的计时器。当回调进入第二个计时器时,计数存在停止。

答案 2 :(得分:0)

经过一些搜索后,没有一个lib能够满足我的需求,所以我自己以一种非常基本的方式实现了它(但对我的用例来说足够了)。

感谢每一位试图帮助我的人。