Java EJB定时器可靠性
我使用openejbJava EJB定时器可靠性,java,quartz-scheduler,openejb,Java,Quartz Scheduler,Openejb,我使用openejb@Resource TimerService(我认为它注入了org.apache.openejb.core.timer.TimerServiceImpl)将周期性任务设置为每秒 timerService.createCalendarTimer(new ScheduleExpression() .hour("*"), .minute("
@Resource TimerService
(我认为它注入了org.apache.openejb.core.timer.TimerServiceImpl
)将周期性任务设置为每秒
timerService.createCalendarTimer(new ScheduleExpression()
.hour("*"),
.minute("*"),
.second("1"),
new TimerConfig("timerName",false)
);
最初,超时几乎每秒都会发生,但随着时间的推移,可靠性会下降,几天后,通话之间的延迟看起来像这样:
delta [seconds] number of occurences
----------------------------------------------
0 18057
1 35084
2 2509
3 4668
4 1869
5 2093
6 632
7 376
8 697
9 93
10 6
11 3
15 2
16 1
18 1
19 1
20 3
22 2
25 2
26 2
31 2
33 1
34 1
38 1
调用的函数没有阻塞,我没有得到任何“UnabletoQuillock”异常
如何确保函数的两次连续调用之间的间隔不超过两秒钟?关于用法的几个问题:1。企业bean通常在事务中创建计时器。如果回滚此事务,则计时器创建也将回滚。类似地,如果bean在回滚的事务中取消计时器,则计时器取消将回滚。在这种情况下,计时器的持续时间被重置,就好像从未发生过取消一样。你能检查一下这个吗。您是否使用一个带有超时注释的方法的调度bean?3.你能考虑使用一个简单的计时器使用TimeService?CuraTimeTo(…)而不是TimeService吗?CealCaleAdEnTrime2(参见REF),你可以发布完整的示例代码吗?