连续轮询Grails的REST服务(Continuously poll a REST service

2019-09-17 20:18发布

我创建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
标签: rest grails