0

は私がのBitbucket CIかかわら展開のNode.jsで書かれた7つの機能、およびプロジェクトのルートで以下のhost.json -fileとAzureの機能アプリケーションを持っています私が知っているように、これは一度に1つのキュートリガ機能が起動されることを確実にするはずです。無効にAzureの機能複数の同時のトリガ

しかし、私は私の機能で、次のステートメントに置く場合:

context.log(`Started processing at ${new Date()}`); 

を私はまだ2つのキュー・メッセージの正確な同じ開始時間といくつかのケースを持っています。

何が不足していると思いますか? この機能はファンクションごとまたはキューごとに使用されますか?batchSize

答えて

0

host.json documentationを見ると、batchSizeがper(job)関数であることがわかります。

Azure関数がバッチを取得する場所は、queue listenerです。

QueueTriggerバインディングごとに作成されたキューリスナーが別々に存在するため、batchSizeは関数ごとです。この場合、同じキューからトリガする7つのファンクションがあるため、別々のファンクション実行でこのインスタンスで同時に処理するキュー・メッセージを最大7つ持つことができます。

同じキューから起動された2つの機能を持つwebjobsコンソールアプリケーションを作成して検証しました。私は、同じキュー上で同時にリッスンする2つの別々のQueueListenerオブジェクト(GetHashCode経由)が各関数に1つずつ存在することが分かりました。

なぜ同時実行を無効にしたいのですか?

+0

私は7つの機能を持っていますが、そのうち3つはキュートリガを持っていますが、それらの機能には別のキューがあります。つまり、1つの特定のキューで1つの関数を処理していて、複数のメッセージを同時にデキューすると言うことができます。私は実際に私は私のキューに何も残っているまで私の関数を順番に実行する必要があるので、私は実際には、Webスクレーパーを書いています。理想的な方法は、私のキューメッセージと組み合わせたタイマートリガーであり、X秒ごとにファンクションを発生させますが、キュートリガーを使用して一度に1つだけで十分です。返信をありがとう – Schaemelhout

+0

また、私の関数を10秒間制限するために 'context.done()'を呼び出す前に、 'setTimeout()'を関数の最後に追加しようとしましたが、それは役に立ちません。タイムアウトに達する前にデキューされます。 – Schaemelhout

+1

すべてのコメントMattは、これらの設定ノブが単一のホストインスタンスでの処理にどのように影響するかを正しく説明しています。ただし、Function Appがスケールアウトされている場合(Consumptionプランで実行されているときに自動的に機能するように)、異なるVMインスタンス間で並行性が得られます。これらのノブはインスタンスごとにグローバルではありません。あなたは消費をしていますか? – mathewc

関連する問題