Async Scope in Mule 4 | Async in Mule 4

Async Scope in Mule 4


The Async scope is a branch processing block that executes simultaneously with the main flow. The main flow continues to execute while it initiates and processes the Async scope. The flow does not have to pause until the last message processor embedded in the asynchronous flow has completed its task.

Async can be useful for executing time-consuming operations that do not require you to send a response back to the initiating flow (such as printing a file or connecting to a mail server).

Async scope processes the nested list of message processors asynchronously using a thread pool.

flow of async scope:


Here in above flow, since we applied async scope in subflow it processes asynchronously in a separate thread while parent flow execute in separate thread.
So parent flow will not wait for child flow to execute and continue its processing irrespective of child flow.

URL : http://localhost:8085/async

Method : GET

Output:


XML Project Code:

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core"
       xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">
       <http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="32e8c48a-de6a-4a27-870f-dc9e2240af52" >
              <http:listener-connection host="0.0.0.0" port="8085" />
       </http:listener-config>
       <flow name="test_asyncFlow" doc:id="761c4811-ddf5-4c4a-a75c-07b288cff799" >
              <http:listener doc:name="Listener" doc:id="9930e598-8827-487c-b402-85bd05f50282" config-ref="HTTP_Listener_config" path="/async"/>
              <async doc:name="Async" doc:id="918beb26-ca8b-4221-8693-11f511dc0891" >
                     <flow-ref doc:name="Flow Reference" doc:id="46f07222-8fcc-462d-9d87-acdeb5e78cbf" name="test_asyncFlow1"/>
                     <logger level="INFO" doc:name="Logger" doc:id="d0e30ad6-399f-48cb-9857-843381d6c664" message="First Logger"/>
              </async>
              <logger level="INFO" doc:name="Logger" doc:id="6c2f2bfc-ae5f-431e-9443-31b2ef489feb" message="Second Logger"/>
       </flow>
       <flow name="test_asyncFlow1" doc:id="4c146020-1bc6-40b8-9e72-5be70add5fcc" >
              <logger level="INFO" doc:name="Logger" doc:id="5235ee3d-24df-41f8-af18-176034eb6c3c" message="In subflow........."/>
       </flow>
</mule>