An Azure service that provides an event-driven serverless compute platform.
Hello Anuraj !
Thank you for posting on MS Learn Q&A.
From the screenshots you shared AzureWebJobsStorage is configured with managed identity settings but the queue trigger connection only appears to have:
QueueConection__queueServiceUri
When your trigger uses:
[QueueTrigger("b2b2devpoc", Connection = "QueueConection")]
QueueConection is treated as a separate identity-based connection. It does not automatically inherit the AzureWebJobsStorage__credential or AzureWebJobsStorage__clientId settings.
For a user assigned managed identity, you can add the same identity settings under the queue connection prefix:
QueueConection__queueServiceUri = https://<storage-account>.queue.core.windows.net/
QueueConection__credential = managedidentity
QueueConection__clientId = <user-assigned-managed-identity-client-id>
Identity based connections use a shared prefix matching the binding connection value, and for non-AzureWebJobsStorage queue connections the required setting is <CONNECTION_NAME_PREFIX>__queueServiceUri. For user assigned identity, the credential and clientId properties must be added to that same prefix.
Since you are using the same storage account you need to remove the separate queue connection and use the already configured host storage connection:
[FunctionName("qtrigger")]
public void Run(
[QueueTrigger("b2b2devpoc", Connection = "AzureWebJobsStorage")] string myQueueItem,
ILogger log)
{
log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
}
You may need to remove any old exact AzureWebJobsStorage connection string setting if you moved to identity based storage and don't forget to use supported extensions:
- Durable Functions extension 2.7.0+
- Queue extension Microsoft.Azure.WebJobs.Extensions.Storage.Queues version 5.x+
- Identity based queue connections require the 5.x queue storage extension.
Also avoid mixing old Microsoft.Azure.WebJobs.Extensions.Storage 4.x with the new split storage packages because this can create binding conflicts.
Durable Functions uses blobs, queues and tables to coordinate orchestrations and activities. If the host or queue listener cannot authenticate or poll correctly the orchestration start message may be created but the worker never processes it.
I would first add:
QueueConection__credential = managedidentity
QueueConection__clientId = <same-client-id-used-by-AzureWebJobsStorage>
or switch the queue trigger to Connection = "AzureWebJobsStorage" if it is the same storage account.