Thanks for reaching out to Q&A.
In order to control the concurrency, you can make use of the batchsize to process the number of messages at time for a single VM. Only when you would like to limit the scale out instances of the backend VM ,you can utilize the WEBSITE_MAX_DYNAMIC_APPLICATION_SCALE_OUT app setting. Please note that, for consumption/Elastic premium functions , increasing the VM instances is not in your control. You can only limit the VM instances, increasing the VM instances is in control of scale controller.
When there are multiple queue messages waiting, the queue trigger retrieves a batch of messages and invokes function instances concurrently to process them. By default, the batch size is 16. So you can set the batchsize value in the host.json and it should allow you to control the concuurency.
Concurrency in queue triggers: https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue-trigger?tabs=csharp#concurrency
I hope this helps!
Please 'Accept as answer' and ‘Upvote’ if it helped so that it can help others in the community looking for help on similar topics.