簡體   English   中英

如何在Windows Azure工作者角色中安排任務

[英]How to Schedule a task in windows azure worker role

我有一個簡單的Azure Worker角色,每天下午12點執行任務。 下面是完成此任務的代碼。

public override void Run()
{
    try
    {
        while (true)
        {
              int time = Convert.ToInt32(DateTime.Now.TimeOfDay);
              if (time == 12)
              {
                   DoSomethingElse();
              }
        }

    }
    catch (Exception ex)
    {
        Log.Add(ex, true);
    }            
}

這里DoSomethingElse()是一種在每天下午12點發送電子郵件的方法,並且每天只觸發一次。

如何實現在時間12PM時觸發的調度程序並執行DoSomethingElse()

我的問題是:這是(上面的代碼)是最好的方法還是使用任何第三方工具。

這里有幾個其他問題可以解決這個問題(我在上面標注了一個)。 話雖如此,並且有可能重復其他答案已經陳述:

在您的情況下,Windows Azure隊列上的一條簡單消息會延時,直到中午才會顯示,可以正常工作。 這也有助於處理多實例場景:如果您正在運行兩個角色實例,則不希望同一個計划任務運行兩次,因此您需要一種方法只讓其中一個實例執行此代碼。 這可以通過隊列消息輕松處理,或者您可以在單個實例上運行調度程序代碼,方法是使用類似blob租約(可能只有一個寫入鎖定)作為互斥鎖。 @ smarx的博客文章中介紹了這一點

您也可以使用Quartz.Net http://quartznet.sourceforge.net/使用提到的blob租約,這是確保只有一個實例托管任務的好方法。

使用Quartz.Net在Windows Azure工作者角色中安排作業

Cloud Scheduler專門處理雲中的任務調度。

我剛剛遇到這個,所以我沒試過。

http://getcloudscheduler.com/

更新 :忘記雲調度程序! 我連續600次運行每日計划,導致600封電子郵件發送給我的客戶。 不要用!!!

使用Azure任務計划程序 由Scott辜霓側教程這里

具體來說,我將查看存儲隊列操作類型 - 只需在您的工作者角色中注冊隊列事件。

(請注意,如果您希望比每小時更頻繁地安排任務,則此服務可能會花錢。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM