我有一个石英驱动的消息驱动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?
另一个问题(可能值得一个新问题),如果我的工作每秒都被触发(如上所述),但有时需要一分钟才能执行积压的工作。积压上是否有最大尺寸,这会在某个时刻引发错误吗?如果当前正在执行某个工作,是否有一种强制工作被忽略的方法?
答案 0 :(得分:-1)
我真的无法理解你想要完成的事情吗?
当Quartz找到一个触发预定开火时间的触发器时,会调用Quartz作业。此外,Quartz是实例化作业实例的东西(通过JobFactory接口)。
当消息到达JMS目标(Bean配置为使用)时,将调用MessageDrivenBean。在这种情况下,EJB容器是实例化类实例的东西。
我不明白你是如何期望创造同时出现的东西的???!?