2017-03-27 7 views
0

Azureイベントハブをシンクとして持つWebhookを持つAzure関数がある例を設定しています。このイベントハブには2つの異なるコンシューマグループがあり、その1つは別のAzureファンクションで使用されます。コードはあまりにも派手ではありません(抜粋は下にあります)が、私は奇妙なパターンを観察しています。公開された2つのメッセージごとに、1回だけ機能をトリガするように見えます。 AzureイベントハブとAzure関数を統合するとイベントがなくなります

公開ウェブフック:受信

module.exports = function (context, req) { 
    var statusCode = 400; 
    var responseBody = "Invalid request object"; 

    if (typeof req.body != 'undefined' && typeof req.body == 'object') { 
     var eventInformation = req.body; 

     context.log("Received event: " + eventInformation); 

     context.bindings.outEvent = eventInformation; 

     statusCode = 200; 
     responseBody = "Event received."; 
    } 

    context.res = { 
     status: statusCode, 
     body: responseBody 
    }; 

    context.done(); 
}; 

機能:@上記の「コメント」セクションからマイケルの応答は、問題はのためのサポートのバグに関連しているに基づいて

module.exports = function (context, offerMadeEvent) { 
    var connection = new Connection(dbConfig); // Tedious connection 
    connection.on('connect', function(err) { 
     context.log('Connection established.'); 
     // Somewhere in the database callbacks: 
     context.done(); 
    }); 
}; 
+0

また、イベントハブに2つのパーティションがあります。私はこれがおそらく関連しているのだろうかと思っていますが、https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-hubsにパーティション関連の設定が表示されないので、正確な関係を見ていない。 – Michael

+0

機能アプリを「常時オン」にすると物事が変わるのですか?機能Appが消費計画にある場合、応答性に関するいくつかの既知の制限があります(つまり、BlobTriggerのトリガーの遅延など)。おそらく、ここで同様の現象が見られますか? – flyte

+0

実行回数をどのように測定していますか?ログ?モニタータブ? –

答えて

1

デフォルト以外の消費者グループ。

背景
機能のAppインスタンスが機能アプリケーション内のすべての機能のためのプロセス・インスタンスです。関数を実行するには、少なくとも1つの関数Appインスタンスが実行されていなければなりません。

は典型的には、機能アプリケーションインスタンスが原因次のシナリオのいずれかに起動される。

  1. 機能アプリケーションはAzureのポータルを介してアクセスされている -ザUXワークフローは、ユーザに代わって機能アプリケーションをロード効果的に機能Appを生き生きとさせることができます。
  2. 機能アプリケーションインスタンスが内部サービスによって起動されます。すべてのトリガーのイベントのプロキシリスナーとして機能する内部サービスがあります。新しいイベントをリッスンしたり、アクティブでないインスタンスが存在する場合は関数Appインスタンスを起動したり、必要に応じて新しいインスタンスをスケーリングしたりする役割を担います。

消費計画で作成された関数の場合、関数アプリケーションインスタンスは5分間生き続けるでしょう。 5分後に、関数Appインスタンスがアイドル状態になります。 シナリオ#1が発生しない場合、最後の関数アプリケーションインスタンスがアイドル状態になると、ファンクションはシナリオ#2によってのみトリガされます。

問題EventHubのトリガーに
、内部サービスは現在、デフォルトのコンシューマ・グループのイベントのために待機しています。新しいイベントが他のコンシューマ・グループに到着したときに検出されず、関数アプリケーションを起動しません。

これは既知の問題であり、現在修正中です。問題を追跡するには https://github.com/Azure/Azure-Functions/issues/230

関連する問題