ProcessorContext.schedule(..)
接受持续时间间隔参数,我们可以指定每X个时间间隔(例如每小时)执行一些操作(标点)。使用这种调度,执行时间取决于上次应用程序重新启动时间。此外,如果我们有多个应用程序实例,并且仅在单个节点上重新启动了应用程序(例如,由于某些产品问题),则标点符号将在每个节点上绝对不同的时间执行。在某些情况下,它可能不适用,需要按cron表达式执行标点符号,例如"0 0 * * * ?"
每小时执行一次,大约在时间XX:00:00
执行。
是否可以通过cron表达式安排标点符号?还是存在任何解决方法?
作为一种肮脏的解决方法,我们可以计算从现在到即将在Processor.init(..)
中首次执行cron的时间间隔,并在首次触发标点符号时,取消现有的调度并创建一个新的调度,将cron表达式转换为工期实例。似乎这样的解决方法很容易出错。