我创建Grails中的web应用程序,我愿不断(每5分钟左右)查询使用GET REST服务,它检索一系列消息(也可能没有,这取决于),一旦它是东德,我的应用程序应该获取的数据保存为一个对象,并将其存储在我的数据库。 问题是,我不知道我应该如何实现它(用石英cron作业?)
Answer 1:
使用石英一个cron作业会很容易实现。 石英插件是非常容易使用(只需安装它,然后选择“创建Grails的在职富”)。 里面的任务,你可以使用cron表达式(或多种其他方式),这将导致系统可根据时间表执行的工作。
根据几件事情中,GET表情也很容易写。 根据你想打它可能是一样简单的服务:
def result = new URL("http://google.com").text
// parse result depending on what it is
Answer 2:
使用石英插件,使一个cron作业出它可能是前进的最好方式,特别是如果你将需要其他轮询。
但是,如果你知道它一旦脱落,而且你不想在石英拉(一些奇怪的原因),你仍然可以使用计时器任务推出自己的轮询,甚至使用一个Groovy线程:
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
}
}
然后,您可以引导过程中调用此方法,或者创建一个服务类,以上调用构造函数里面,有一个方法停止线程(但如果你到了这个阶段,它实际上只是更容易使用石英)。
文章来源: Continuously poll a REST service in Grails