2017-03-15 94 views
3

我目前有一個天藍色的webjob,可以執行從一個數據庫到另一個數據庫的日常同步,但也希望添加手動觸發同步的功能。我已經設置了功能作爲webjob項目如下:具有Http觸發功能的連續Azure Web工作

public static void SyncData([TimerTrigger("0 0 5 * * *", RunOnStartup = false)] TimerInfo timerInfo) { } 

[NoAutomaticTrigger] 
public static Task SyncAll(TraceWriter log){ } 
[NoAutomaticTrigger] 
public static Task SyncBranches(TraceWriter log){ } 
[NoAutomaticTrigger] 
public static Task SyncCustomers(TraceWriter log){ } 
[NoAutomaticTrigger] 
public static Task SyncInventory(TraceWriter log){ } 

我可以看到在webjob下捻儀表板的功能,但我不知道我怎麼能與HTTP請求觸發功能上市在MS文檔(here):

http://<yourapp>.azurewebsites.net/api/<funcname> 

當我做出那個端點我得到一個404響應的請求 - 我需要什麼才能做觸發這些功能通過HTTP請求手動?

感謝, 瑞安

回答

2

我們可以用捻WebJob API啓動或停止連續工作

POST的https:// {}用戶:{}密碼@ {SITENAME} .scm.azurewebsites.net/API/continuouswebjobs/{作業名稱} /開始

我們可以從Azure WebApp publishSetting文件獲取用戶和密碼信息。我們可以使用小提琴手

enter image description here

注意門戶

enter image description here

測試REST API下載文件:如何創建Azure的功能,請參閱document

更新:

是有辦法,我可以觸發在連續作業的特殊功能?

根據我的經驗,我無法找到一種方法或Rest API直接觸發連續作業中的特定功能。

我的工作是我們可以使用Webjob QueueTrigger。根據隊列消息信息觸發特定功能。 我們可以創建一個WebJob with QueueTrigger

以下是根據您的代碼的詳細步驟。

1.創建一個Azure存儲隊列爲觸發

enter image description here

2。創建Webjob項目並添加以下代碼

public static void SyncData([QueueTrigger("backup")] string logMessage, TextWriter logger) 
    { 
     Console.WriteLine($"Start time:{DateTime.Now}"); 
     switch (logMessage.ToLower()) 
     { 
      case "syncall": 
       SyncAll(logger); 
       break; 
      case "syncbranches": 
       SyncBranches(logger); 
       break; 
      case "synccustomers": 
       SyncCustomers(logger); 
       break; 
      case "syncinventory": 
       SyncInventory(logger); 
       break; 
      default: 
       Console.WriteLine("Default case"); 
       break; 
     } 
     Console.Write($"Endtime:{DateTime.Now}"); 

    } 
    [NoAutomaticTrigger] 
    public static Task SyncAll(TextWriter log) 
    { 

     Console.WriteLine("SyncAll :"+DateTime.Now); 
     return null; 
     //await Task.Delay(10); 
    } 

    [NoAutomaticTrigger] 
    public static Task SyncBranches(TextWriter log) 
    { 
     Console.WriteLine("SyncBranches :" + DateTime.Now); 
     return null; 
    } 

    [NoAutomaticTrigger] 
    public static Task SyncCustomers(TextWriter log) 
    { 
     Console.WriteLine("SyncCustomers :" + DateTime.Now); 
     return null; 
    } 

    [NoAutomaticTrigger] 
    public static Task SyncInventory(TextWriter log) 
    { 
     Console.WriteLine("SyncInventory :" + DateTime.Now); 
     return null; 
    } 

3.使用Azure的Storage Queue REST API創建隊列消息。

4.檢查結果從控制檯。

enter image description here

+0

謝謝湯姆 - 有沒有一種方法可以觸發連續工作中的特定功能?停止和啓動當前作業將不會運行任何功能 - 它只是讓預定功能等待預定時間正確? – rwdial

+1

如果你想在azure webjob中觸發sepcific函數,我的漫遊使用隊列觸發器。更多細節我已經更新了答案。 –

1

你看DOC對Azure的功能,但它看起來像你使用WebJobs(這是不同於Azure的功能)。

我建議使用Azure函數,在這種情況下,您的場景變得更直接。