EJB计时器可靠性

时间:2018-01-02 15:08:01

标签: java quartz-scheduler openejb

我使用openejb @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

调用的函数没有阻塞,我没有得到任何" UnableToAquireLock"异常。

如何确保在函数的两个连续调用之间传递不超过两秒?

0 个答案:

没有答案