/ / Deaktivieren der Azure-Funktion für mehrere simultane Trigger - node.js, azure, azure-storage, azure-Funktionen, azure-storage-queues

Deaktivierung der Azure-Funktion für mehrere simultane Trigger - node.js, azure, azure-storage, azure-Funktionen, azure-storage-queues

Ich habe eine Azure Function App mit 7 Funktionen, die in Node.js geschrieben sind, aber über Bitbucket CI und die folgenden Funktionen bereitgestellt werden host.json-Datei an der Wurzel des Projekts:

{
"id": "...",
"queues": {
// retrieve only 1 queue message at a time
"batchSize": 1,
"maxDequeueCount": 1,
"newBatchThreshold": 0
}
}

Soweit ich weiß, sollte dies sicherstellen, dass jeweils nur eine queue-ausgelöste Funktion ausgelöst wird.

Wenn ich jedoch die folgende Aussage in meine Funktion einfüge:

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

Ich habe immer noch einige Fälle mit genau der gleichen Startzeit für 2 Warteschlangennachrichten.

Irgendeine Idee, was ich vermisse? Ist das batchSize Eigenschaft pro Funktion oder pro Warteschlange?

Antworten:

0 für die Antwort № 1

Wenn Sie in die host.json DokumentationSie können sehen, dass BatchSize pro (Job) -Funktion ist.

Hier, wo Azure Functions die Charge zieht, in Warteschlangenlistener.

Für jede QueueTrigger-Bindung wird ein separater Warteschlangenlistener erstellt batchSize ist per-Funktion. In diesem Fall könnten Sie, während Sie 7 Funktionen aus derselben Warteschlange triggern, bis zu 7 Warteschlangennachrichten gleichzeitig in dieser Instanz in separaten Funktionsausführungen verarbeiten.

Ich verifizierte, indem ich eine webjobs Konsolenanwendung schrieb, die zwei Funktionen hat, die aus der gleichen Warteschlange ausgelöst werden. Ich konnte sehen, dass es zwei separate QueueListener-Objekte gab (via GetHashCode), eine für jede Funktion, die gleichzeitig in der gleichen Warteschlange wartet.

Warum möchten Sie die gleichzeitige Ausführung deaktivieren?