[Azure] 透過手動設定排程工作集合並執行WebJob

在Microsoft Azure的服務中,WebJob往往擔任背景執行的工作
但是在背景執行的排程上,WebJob卻是屬於被動式的執行,必須要搭配排程工作集合才能進行排程執行

在透過Visual Studio進行WebJob發佈時,可以透過[發行為Azure WebJob]的功能,設定該WebJob執行的周期

不過當發行成功後,這個發行的動作,卻會在Azure上自動建立一個[CS-WebJobs-EastAsia-scheduler]的資源群組,以及名為[WebJobs-EastAsia]的排程工作集合,並在裡面加入呼叫的排程動作

自動完成這樣排程的設定固然很方便,但是若是要用在正式上線的環境中,或是對於比較要求資源的整理與使用的人來說,這樣自動設定完成的功能實在是多此一舉,下面的內容就說明如何進行手動設定排程呼叫WebJob的動作

要手動建立工作排程並呼叫WebJob的步驟很簡單,但是有一些步驟其實Visual Studio偷偷作掉了,所以有幾點是需要注意的

首先,先到要被呼叫的WebJob上的WebApp,點選[取得發行設定檔],並將該檔案儲存至本機上

在新增的視窗中,輸入要新增的項目為[排程器]

工作集合與排程器之間的關係如下圖所示所以這裡建立的排程器是在工作集合之中的項目,要小心不要搞混或是搞相反了

接著輸入給予這個排程器的名稱,以及選擇是否要新增工作集合,或是使用現有的工作集合放置這個排程器

工作集合請不要選擇[免費][免費]的工作集合無法讓[排程器]進行驗證,呼叫WebJob會發生無法授權的問題

接著在[動作設定]中,將方法改為[Post],並在[URL]中填入如下面格式的字串
https://[WebApp應用程式名稱].scm.azurewebsites.net/api/triggeredjobs/[WebJob名稱]/run
這個URL主要是設定要呼叫的WebJob的URL,如果設錯了,就無法呼叫到WebJob了

接下來這個工作最重要,先將第一個步驟中取得的發行設定檔使用筆記本打開,並取出[userName]以及[userPWD]兩個設定值

在[動作設定]的下方,[驗證設定]的選項中,將[userName][userPWD]填入,並將驗證類型更改為[基本]

下方的[重試原則]以及[錯誤動作]可以視需要進行設定,這邊就先不提

排程的設定,就視需要進行修改,一般來說WebJob的排程有可能會是在半夜,或是週期性執行,時域的部份記得UTC時差要調整

到這個步驟,手動建立呼叫WebJob的排程就已經建立完成了

進入排程器之後,點選[立即執行]

執行完成後,可以看到排程器已經正確執行了

從WebJob裡也可以看到程序確實被觸發了,只是因為我在WebJob裡並沒有加入任何的程式,所以WebJob執行是失敗的

透過手動設定排程器的動作,可以讓排程執行WebJob的排程更容易管理,而不會因為Visual Studio自行在Azure上建立的資源群組與工作排程集合讓管理上造成困擾

WebApp的發行檔設定內容請一定要在[驗證設定]中加入[userName][userPWD],不然呼叫WebJob一定會失敗