2017-05-17 3 views
0
public static void Run(string input, TraceWriter log) 
{ 
    log.Info("SimpleProducer"); 
    KafkaOptions options = new KafkaOptions(new Uri("http://*******:9092")); 
    BrokerRouter router = new BrokerRouter(options); 
    Producer client = new Producer(router); 
    while(true) 
    { 
     JObject obj = JObject.FromObject(new 
       { 
       ExchangeName = "BitFinex", 
       CurrencyPair = "Dollar", 
       MachineTime = DateTime.Now.ToString("dd-MM-yyyy_HH:mm:ss.ffffff"), 
       OrderSide = "Buy", 
       OrderId = "123", 
       Price = "10", 
       Quantity = "100" 
       }); 
     log.Info(obj.ToString(Formatting.None)); 
     client.SendMessageAsync("tenant", new[] { new Message(obj.ToString(Formatting.None)) }).Wait(); 

     log.Info("Next Iteration"); 
    } 

} 

私はループを使って、紺碧の蒼穹の機能で連続的にデータを処理しました。しかし、紺色の機能は5〜6分後に停止し、もう一度蒼白の機能を再実行する必要があります。 azure関数を連続して実行するための設定はありますか?上記のコードを使用しました。5〜6分後に蒼白の機能を停止させると、それを継続的に実行する方法を教えてください。

+0

Azure関数は主にイベント駆動型です。これは、関数(タイマー、キュー、ストレージなど)をトリガするために何か必要なことを意味します。したがって、これはあなたが達成しようとしているものに対して不適切な機能になります。 – Chris

答えて

0

いいえ、WebJobを使用する必要があります。 Azure関数は、実行時間の5分で上限が設定されます。ここで

あなたはWebJobsを始めるための記事です:
https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-create-web-jobs

彼ら(機能とWebJobsが)ので、コードを移植することは些細なことでしょう、基本的に(同じSDKから作られた)同じものです。

1

あなたは有効のAlwaysOnApp Service Plan下でそれらを作成することで、長時間実行されるジョブを実行するAzureの機能を使用することができます。このオプションを使用すると、常に稼動している現在の5分の実行時間制限を持たない専用のインフラストラクチャが提供されます。

+0

次のリリースのAzure関数(次週以降)では、最大タイムアウト値を10分に増やしていきますので、WebJobsの方がこのタスクに適しています。 https://github.com/Azure/azure-webjobs-sdk-script/pull/1502を参照してください。 – mathewc

関連する問題