Фоновая нить Grails, Кварц - PullRequest
       1

Фоновая нить Grails, Кварц

0 голосов
/ 27 октября 2010

Я занимаюсь разработкой веб-сайта футбольного менеджера, но не могу понять, как правильно использовать плагин background-thread и плагин Quartz (документации мало).Моя проблема в том, что у меня есть контроллер класса Match, с функцией, которую мне нужно запустить через некоторое время.С помощью кварца я пытался создать задание, но затем я не могу напрямую вызвать функцию (и сколько заданий я должен создать, если у меня больше совпадений для начала?) Или я не знаю, как это сделать, и с background-threadЯ создаю класс обслуживания, но потом понятия не имею, как его реализовать.Кто-то может помочь мне с этим?Спасибо

РЕДАКТИРОВАТЬ:

Решение в этом посте:

Grails Thread -> hibernateException: Нет Hibernate сессиипривязан к теме

Ответы [ 2 ]

1 голос
/ 27 октября 2010

Фоновый поток был задуман как простой плагин, который выполняет только то, что следует из названия - запускайте некоторый код в фоновом потоке.

Он не дает вам указателя на фоновый поток (что я могуНапомним), так что это просто тип вещей "установил и забыл".

Кварц - это правильный выбор для того, что вы хотите сделать.У меня, вероятно, не было бы работы, вызывающей контроллер, хотя.Логика «игры в матчах» звучит так, как будто она должна быть в сервисе.Вы можете получать свои услуги в классы заданий так же, как и в контроллерах.

cheers

Lee

1 голос
/ 27 октября 2010

Иногда просто нужно продолжать пытаться :) С кварцем мне это нравится:

class TestJob {

    MatchController match = new MatchController()

    static triggers = {
        /*
         * firstThread runs every minute from 8 to 9:59 on wednsday
         */
        cron name: 'firstThread', cronExpression: "0 0/1 8-9 ? * WED"
        cron name: 'secondThread', cronExpression: "0 0/5 8-9 ? * WED"
        cron name: 'thirdThread', cronExpression: "0 0/10 8-9 ? * WED"
        cron name: 'forthThread', cronExpression: "0 0/15 8-9 ? * WED"
    }

    def group = "MyGroup"

    def execute() {
        /*
         *  execute task
         *  call playMatch from match controller
         */
        println "run thread: "
            + String.format('%tH:%<tM:%<tS.%<tL',System.currentTimeMillis())

        match.playMatch()
    }
}

Кажется, работает. Но все же интересно, я использую background-thread

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...