2017-03-15 8 views
3

私は現在、あるデータベースから別のデータベースへの日々の同期を実行する空白のWebジョブを持っていますが、手動で同期をトリガーする機能も追加したいと考えています。私はwebjobプロジェクトで、次のような機能を設定している:私はwebjob下クーズーのダッシュボード内の関数を参照することができ連続したAzure WebJob with Http Triggered Functions

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){ } 

が、上のリストされているように私は、httpリクエストで機能をトリガすることができますかわかりませんMSのドキュメント(here):

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

私はそのエンドポイントへの要求を行うとき、私は404応答を取得する - 私は、HTTP要求を経由して、手動でこれらの機能をトリガするために何をする必要がありますでしょうか?

おかげで、 ライアン

答えて

2

私たちは、クーズーWebJob APIを使用することができ、連続ジョブを開始または停止する

POSTます。https:// {ユーザー}:{パスワード} @ {サイト名} .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.Createトリガー

enter image description here

2 Azureストレージキュー。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.Use AzureのStorage Queue REST APIを追加します。

4.結果をコンソールから確認します。

enter image description here

+0

おかげでトム - 私はその連続ジョブ内の特定の機能をトリガすることができます方法はありますか?現在のジョブを停止して開始しても、どの関数も実行されません。スケジュールされた関数がスケジュールされた時刻を正しく待っているだけでしょうか? – rwdial

+1

空白のwebjobで重要な機能をトリガーしたい場合は、私のウォークアラウンドでキュートリガーを使用しています。詳細私は答えを更新しました。 –

1

あなたはAzureの機能のためのドキュメントを見ているが、あなたは(Azureの機能が異なる)WebJobsを使用しているように見えます。

代わりにAzure関数を使用することをお勧めします。この場合、シナリオはより簡単になります。

関連する問題