Можно ли запускать задания из задания @OnApplicationStart? - PullRequest
1 голос
/ 19 декабря 2011

Из такой работы я делаю:

@OnApplicationStart
public class Bootstrap extends Job {
  Foo foo = new Job<Foo>() {
    ...
    return new Foo();
  }.now().get();
}

И обнаруживаю, что внутренняя работа никогда не выполняется, приводя приложение в тупик, потому что оно блокирует get().

Я использую Play 1.2.4 в режиме разработки.Задание отправляется на JobsPlugins.executor, который инициализирован для 10 потоков - более чем достаточно.Я пытался поместить точку останова в Callable внутри Job.now() - эта точка останова никогда не срабатывает.

1 Ответ

2 голосов
/ 19 декабря 2011

Да, это поддерживается и работает хорошо. Одной из причин этого может быть контроль порядка выполнения заданий.

Для моего приложения только BootstrapJob помечено @ OnApplicationStart и контролирует порядок выполнения

public void doJob() {

    if (User.count() == 0)
        Fixtures.loadModels("user-data.yml");

    Logger.info("Starting synchronous jobs.");
    new StaticDataJob().doJob();

    Logger.info("Starting asynchronous jobs.");
    new TransactionJob().now();
    new ReportJob().now();

        Logger.info("Boostrap job complete.");
}
...