Until Successful Scope in Mule 4

Until Successful Scope in Mule 4


Until successful scope is used to trying access a resource successfully finite number of times. In the example below transform message is configured incorrectly. Until successful scope retries the finite number of times that is mentioned until successful configuration otherwise logs exception.

Flow:


Until successful configuration:


Transform message settings:


It will retry 5 times as mentioned in the configuration.

URL: http://localhost:8085/until
Method: GET

Output:

Since transforming message component configured incorrectly so until successful retried and logged exception after given attempts.




XML project code:


<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" 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://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">
     <http:listener-config name="HTTP_Listener_config" doc:name="HTTP Listener config" doc:id="d7122862-96d0-4e57-b3a7-ed8a43c4536d" >
          <http:listener-connection host="0.0.0.0" port="8085" />
     </http:listener-config>
     <flow name="test_unsuccessfulFlow" doc:id="20d81ba6-bdd1-471b-9b2d-e600714114ad" >
          <http:listener doc:name="Listener" doc:id="11cd4dfb-1b23-404b-a8b8-b6707d2144a9" config-ref="HTTP_Listener_config" path="/until"/>
          <until-successful maxRetries="5" doc:name="Until Successful" doc:id="0ef7fc0d-1d2e-428e-b17d-7fb57eca786a" millisBetweenRetries="5000">
              <ee:transform doc:name="Transform Message" doc:id="8200c4f6-5e13-4e8f-bb2f-734852b2bf26" >
                   <ee:message >
                        <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
     id:- payload.id
}]]></ee:set-payload>
                   </ee:message>
              </ee:transform>
          </until-successful>
     </flow>
</mule>