2009-07-07 2 views
4

Я создаю веб-приложение в Grails, и я хотел бы постоянно (каждые 5 минут или около того) опросить службу REST с помощью GET, которая извлекает серию сообщений (или, возможно, их нет). зависит), и как только это будет donde, мое приложение должно сохранить извлеченные данные в качестве объекта и сохранить его в моей базе данных. Проблема в том, что я понятия не имею, как я должен ее реализовывать (с помощью задания cron с использованием Quartz?)Непрерывный опрос службы REST в Grails

ответ

5

Работу cron с использованием кварца было бы очень легко реализовать. Плагин кварца очень прост в использовании (просто установите его, а затем «grails create-job Foo»). Внутри задачи вы можете использовать выражение cron (или несколько других способов), которое приведет к выполнению задания в зависимости от расписания.

В зависимости от нескольких вещей выражение GET также очень легко писать. В зависимости от службы вы пытаетесь ударить это может быть столь же легко, как:

def result = new URL("http://google.com").text 
// parse result depending on what it is 
4

с помощью плагина Quartz и сделать хрон из него, вероятно, лучший путь вперед, особенно если вы будете нуждаться другие участники.

Однако, если вы знаете его некогда прочь, и вы не хотите, чтобы тянуть в кварце (по какой-то причине), вы можете свернуть свой собственный Poller с помощью задачи таймера, или даже использовать заводной тему:

Thread.start { 
    while (keepGoing) { 
     def result = new URL("http://google.com").text 
     // parse result depending on what it is 
     //perhaps def model = new YourDomainModel(result).save() 
     keepGoing = model.shouldContinue //calculate whether to keep going based on the result, or some other method call/logic 
     Thread.sleep(5*60*1000) //min*seconds_per_min*milliseconds_per_second 
    } 
} 

После этого вы можете вызвать это во время загрузки или создать класс обслуживания, вызывать это внутри конструктора и иметь способ остановить поток (но если вы дойдете до этого этапа, его просто проще использовать кварц).