Hi Boda,
The behaviour you are seeing is expected. The synchronous/asynchronous option on a button does not make the microflow itself run in the background.
With both options, the microflow still executes sequentially, so if it reaches a REST call that takes 10 seconds, the microflow waits for that response before continuing.
The difference is mainly in how the Mendix client waits for the microflow to finish. With synchronous execution, the client keeps the request open until the microflow completes. With asynchronous execution, the client does not keep the same long-running request open and instead checks whether the execution has finished.
So in your example, the REST call will take 10 seconds in both cases. The asynchronous option does not behave like a Task Queue.
If you really want the work to run independently in the background, then Task Queue is the appropriate mechanism.
A simple way to think about it is:
That is why your logging shows the same delay in both tests.
I hope this helps.
Hi Santhosh,
In Mendix, Synchronous/Asynchronous, Show Progress Bar, and Task Queue are different concepts. They control how a microflow call is handled, what the user sees, and whether the work runs as a background task.
Synchronous (default)
Asynchronous
Important: Asynchronous does not automatically mean the microflow runs in a Task Queue or executes faster. It changes how the client handles the call.
This setting controls the user experience while the microflow executes.
Option | Behavior |
None | No progress indicator is displayed. |
Non-blocking | Displays progress while allowing the user to continue working. |
Blocking | Displays progress and prevents the user from continuing until execution finishes. |
This setting does not change the microflow's business logic or make the execution faster.
A Task Queue is different from the Asynchronous call type.
If your requirement is to execute a long-running operation in the background without making the user wait for the actual processing to finish, consider using a Task Queue.
For example:
User clicks button
|
v
Start background processing
|
v
Task Queue executes microflow
|
v
Process external API / business logic
|
v
Save result and update status
|
v
User checks the result
You can configure a microflow call to execute in a Task Queue. The application should store the processing status and provide a way for the user to retrieve the result when it is ready.
Since your example calls a REST API that takes around 10 seconds:
One important point: changing the call type to asynchronous does not resolve a timeout occurring inside the external API itself. You still need to configure and troubleshoot the REST request timeout separately.
My recommendation: If the REST API response is required immediately, start with a synchronous call and configure an appropriate timeout. If the operation can finish in the background, use a Task Queue and store its result/status.
Hope this clarifies the difference.