Кварц заставляет задание, управляемое сообщением, быть непараллельным - PullRequest
0 голосов
/ 19 января 2012

У меня бин, управляемый сообщениями:

@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-управляемыми бобами, управляемыми дестагами?

Другая проблема (вполне может заслуживать нового вопроса), если моя работа запускается каждую секунду (как указано выше), но иногда требуется минута, чтобы выполнить то, что происходит с отставанием заданий. Есть ли максимальный размер в бэклоге, это приведет к ошибке в какой-то момент? Есть ли способ заставить задания игнорироваться, если задание выполняется в данный момент?

1 Ответ

0 голосов
/ 19 января 2012

Я действительно не могу понять, что вы пытаетесь выполнить?

Задание Quartz вызывается, когда Quartz находит триггер, для которого наступило запланированное время стрельбы.Кроме того, Quartz - это объект, который создает экземпляр задания (через интерфейс JobFactory).

MessageDrivenBean вызывается, когда сообщение поступает в пункт назначения JMS (из которого настроен бин).В этой ситуации EJB-контейнер - это то, что создает экземпляр класса.

Я не понимаю, как вы ожидаете создать что-то одновременно, и то и другое?!?!?

...