Blog Post

Apps on Azure Blog
2 MIN READ

Long execution functions with Service Bus Trigger

theringe's avatar
theringe
Icon for Microsoft rankMicrosoft
Aug 31, 2022

Function App under at least a Premium plan could have unlimited execution time. However, it might caused a duplicated invocation issue with a ServiceBus trigger because the "PeekLock" duration is up to 5 minutes (including renew).

 

It is a tutorial to reproduce such the scenario.

 

STEP 1: In Azure portal, create a new Premium python Function App and a Service Bus + Queue

 

STEP 2: Download the sample code and apply some changes.

https://cchlab.blob.core.windows.net/cchlab/cchlabsbf.zip

In "host.json", please specify the Function App timeout and the ServiceBus PeekLock timeout as below.

In "ServiceBusQueueTrigger1/function.json", please setup some configuration:

SBQ_STRING=<your service bus queue name>

Then, deploy the project to Function App.

 

STEP 3: Making an experiment with a short execution time.

Visit: https://<YourAppName>.azurewebsites.net/api/httptrigger1?t=<DurationInSecond>

Please specify the "DurationInSecond" to 30 this time, and you may see the result like this:

We apply this operation to send a message to the ServiceBus queue and told the ServiceBus trigger to pause 30 seconds before execution.

Now, please go to the monitor page:

You can see it is just a normal short invocation.

 

STEP 4: Making an experiment with a long execution time.

Visit: https://<YourAppName>.azurewebsites.net/api/httptrigger1?t=<DurationInSecond>

Please specify the "DurationInSecond" to 330 this time, and you may see the result like this:

Now, please go to the monitor page:

As you can see, there are duplicate invocations with the same message id, which might caused some potential business issues if we ignore them.

 

Conclusion:

Since we cannot adjust "maxAutoRenewDuration" to more than 5 minutes, we could only reduce the execution time from this ServiceBus trigger.

Updated Aug 31, 2022
Version 2.0
No CommentsBe the first to comment