Quartz强制消息驱动的作业是非并发的

时间:2012-01-19 09:44:33

标签: java-ee ejb-3.0 quartz-scheduler

我有一个石英驱动的消息驱动bean:

@MessageDriven(activationConfig={@ActivationConfigProperty(propertyName="cronTrigger", propertyValue="* * * * * ?")})
@ResourceAdapter(value="quartz-ra.rar")
public void SomeJob implements Job {

    @Override
    public void execute(final JobExecutionContext job) throws JobExecutionException() {}

}

现在我明白,如果我将SomeJob改为StatefulJob,那么任何时候都只会执行一次。每个触发器将等待上一个作业完成。这就是我的要求,我已经看到StatefulJob已被弃用,@DisallowConcurrentExecution是替代品。这是否适用于EJB dessage驱动的bean?

另一个问题(可能值得一个新问题),如果我的工作每秒都被触发(如上所述),但有时需要一分钟才能执行积压的工作。积压上是否有最大尺寸,这会在某个时刻引发错误吗?如果当前正在执行某个工作,是否有一种强制工作被忽略的方法?

1 个答案:

答案 0 :(得分:-1)

我真的无法理解你想要完成的事情吗?

当Quartz找到一个触发预定开火时间的触发器时,会调用Quartz作业。此外,Quartz是实例化作业实例的东西(通过JobFactory接口)。

当消息到达JMS目标(Bean配置为使用)时,将调用MessageDrivenBean。在这种情况下,EJB容器是实例化类实例的东西。

我不明白你是如何期望创造同时出现的东西的???!?