如何创建在计时器上运行的服务来查询外部Web服务?

时间:2012-12-31 17:44:02

标签: azure timer azure-worker-roles

我对可能性和最佳处理方式感到不知所措。我需要在Windows Azure上托管一个运行计时器的Web服务,经过一段时间后,将查询外部Web服务并处理检索到的数据并将其导入我的SQL Azure数据库。我目前正在Windows Azure上托管WCF Web服务和网站以及SQL Azure数据库。我尝试了一个辅助角色,但是只运行一次并在Run方法完成后退出,即使你添加一个计时器并以一个间隔启动计时器。最佳解决方案表示赞赏感谢。

1 个答案:

答案 0 :(得分:2)

诀窍是工作者角色从不从“运行”方法出来。类似的东西:

    public override void Run()
    {
        while (true)
        {
            Thread.Sleep(10000);
        }
    }

现在回答你的问题,你可以简单地在你的worker角色中实现一个Timer对象,当计时器过去时,你会调用那个外部Web服务。您可以使用以下代码实现自己的计时器:

    public override void Run()
    {
        System.Timers.Timer timer = new System.Timers.Timer(1000);
        timer.Elapsed += timer_Elapsed;
        while (true)
        {
            Thread.Sleep(10000);
        }
    }

    void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        //Execute the code to call the web service
    }

然而,对于实现计时器,我最喜欢的是Quartz库(http://quartznet.sourceforge.net/)。我发现它相当容易使用,非常灵活,而且它是开源的。

希望这有帮助。

相关问题