I'm trying to get my Function App Servicebus Queue Trigger to be used with the parameters for queue name and connection string fetched from App configuration Service in Azure.
My setup works for fetching and my configuration in the application context seems to get populated correctly but for some reason my Function App Servicebus queue trigger doesn't bind correctly with the name of the setting. I still get a:
The listener for function 'Functions.MessageHandler' was unable to start. Microsoft.Azure.WebJobs.Extensions.ServiceBus: Service Bus account connection string 'PartFinder:Servicebus:ConnectionString' does not exist. Make sure that it is a defined App Setting.
Error message when running my app locally. This lead me to read up a bit more around the web and I found these Links:
How to use Azure App Configuration Service with Azure Functions in local dev environment?
Isolated azure function with service bus trigger - connection string from azure app configuration
How to use Azure App Config Service with Azure Functions for binding input parameters
If I understood this correctly, this is not yet possible, So I Defaulted back to having App config references set to the correct App Configs in the App Config service in the Azure function app namespaces settings instead using this method:
App Configuration Service Referencing Syntax
But just to make sure I haven't missed anything...Does anyone know if what is claimed in the links above is relevant today? Have this issue or rather the support for App Configuration settings referencing directly to function Servicebus Queue trigger parameters been solved from Microsoft's side yet?
As of JAN 2025, it is still not supported to implement Azure App Configuration with Service Bus trigger Isolated Azure function. Refer the response provided by @fabiocav in GitHub.
I got the same error when I tried to fetch connection string from Azure App Configuration.
You have to add the Connection String and Queue name as the application setting in Function app's configuration (or) local.settings.json
.
local.settings.json:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
"FunctionsConfiguration:ServiceBusQueueTrigger:Connection": "<Service_Bus_connection>",
"FunctionsConfiguration:ServiceBusQueueTrigger:Queue": "<ServiceBus_Queue_Name",
}
}
Function.cs:
[Function(nameof(Function1))]
public async Task Run([ServiceBusTrigger("%FunctionsConfiguration:ServiceBusQueueTrigger:Queue%", Connection = "FunctionsConfiguration:ServiceBusQueueTrigger:Connection")]ServiceBusReceivedMessage message, ServiceBusMessageActions messageActions)
{
_logger.LogInformation("Message ID: {id}", message.MessageId);
_logger.LogInformation("Message Body: {body}", message.Body);
_logger.LogInformation("Message Content-Type: {contentType}", message.ContentType);
await messageActions.CompleteMessageAsync(message);
}
Able to run the Service Bus trigger as expected:
Output:
Functions:
Function1: serviceBusTrigger
For detailed output, run func with --verbose flag.
[2025-01-10T12:24:51.269Z] Host lock lease acquired by instance ID '0000000000000000000000000C237F69'.
[2025-01-10T12:25:32.550Z] Executing 'Functions.Function1' (Reason='(null)', Id=4adf5f29-7c2d-47c0-b267-13ef26df9b63)
[2025-01-10T12:25:32.554Z] Trigger Details: MessageId: 8496e0942a35481eb545dec1f80fbd54, SequenceNumber: 1, DeliveryCount: 1, EnqueuedTimeUtc: 2025-01-10T12:25:30.6990000+00:00, LockedUntilUtc: 2025-01-10T12:26:30.9490000+00:00, SessionId: (null)
[2025-01-10T12:25:32.925Z] Message ID: 8496e0942a35481eb545dec1f80fbd54
[2025-01-10T12:25:32.928Z] Message Body: Hello World
[2025-01-10T12:25:32.932Z] Message Content-Type: (null)
[2025-01-10T12:25:33.012Z] Start processing HTTP request POST [http://127.0.0.1:59040/Settlement/Complete](http://127.0.0.1:59040/Settlement/Complete "http://127.0.0.1:59040/settlement/complete")
[2025-01-10T12:25:33.022Z] Sending HTTP request POST [http://127.0.0.1:59040/Settlement/Complete](http://127.0.0.1:59040/Settlement/Complete "http://127.0.0.1:59040/settlement/complete")
[2025-01-10T12:25:33.543Z] Received HTTP response headers after 495.5078ms - 200
[2025-01-10T12:25:33.551Z] End processing HTTP request after 567.419ms - 200
[2025-01-10T12:25:33.596Z] Executed 'Functions.Function1' (Succeeded, Id=4adf5f29-7c2d-47c0-b267-13ef26df9b63, Duration=1087ms)
As an alternative, you can also use App Configuration reference.