Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Do Azure Functions triggered by storage queue take single message or all messages?

If I create an Azure Function that is triggered by storage queue messages... will the system launch multiple parallel functions to reach each message from the queue or will a single function get called that reads in all available messages?

In short, are queued messages handled individually or in batches?

like image 692
CBGrey Avatar asked Jun 25 '17 18:06

CBGrey


3 Answers

API-wise your function will be called once per each individual message in the queue.

But Azure Functions runtime will retrieve and process messages in batches, calling several instances of your function in parallel.

like image 105
Mikhail Shilkov Avatar answered Oct 21 '22 02:10

Mikhail Shilkov


First, as Mikhail said, Azure Functions runtime retrieve and process queue messages in batches. And the default batchSize is 16 and the maximum batchSize is 32

Besides, we can do configuration for 'queue' triggers and specify/modify batchSize in host.json file.

Configuration settings for 'queue' triggers

"queues": {
  "maxPollingInterval": 2000,
  "visibilityTimeout" : "00:00:10",
  "batchSize": 16,
  "maxDequeueCount": 5,
  "newBatchThreshold": 8
}
like image 23
Fei Han Avatar answered Oct 21 '22 01:10

Fei Han


It doesn't handle all the messages in one go but it supports message batching. In order to enable batching you need to make the function's input an array of the type rather than the type itself. (e.g. EventData[] rather than EventData) then the batching applies. You can set the batch size up to 32 as @Fei mentioned. Checkout the following link talks about it briefly:

https://learn.microsoft.com/en-us/azure/azure-functions/functions-best-practices

like image 33
akardon Avatar answered Oct 21 '22 01:10

akardon