Computing Magazine

ForEach Vs Splitter in Mule

Posted on the 20 November 2019 by Abhishek Somani @somaniabhi
This example app will show the difference between Foreach and splitter in Mule version 3.x. Collection splitter splits the incoming collection object and then you have to put a aggregator to collect the resultant objects. For each scope is a scope which does not change the payload and you get the same collection object once for each loop completes.

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:vm="http://www.mulesoft.org/schema/mule/vm" 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:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
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_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
<flow name="foreachtestFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/test" allowedMethods="GET" doc:name="HTTP"/>
<component class="foreachexample.CollectionPayloadComponent" doc:name="Java"/>
<!-- <foreach doc:name="For Each">
<choice doc:name="Choice">
<when expression="#[payload == 'foreach']">
<set-session-variable value="foreachVar" variableName="test" doc:name="Session Variable"></set-session-variable>
</when>
<otherwise>
<set-session-variable value="BBQVar" variableName="test" doc:name="Session Variable"></set-session-variable>
</otherwise>
</choice>
<flow-ref name="flow3" doc:name="Flow Reference"/>
</foreach> -->
<collection-splitter />
<logger message="payload is : #[payload]" level="ERROR"/>
<choice>
<when expression="#[payload == 'foreach']">
<set-session-variable value="foreachVar" variableName="test"></set-session-variable>
</when>
<otherwise>
<set-session-variable value="BBQVar" variableName="test"></set-session-variable>
</otherwise>
</choice>
<flow-ref name="flow3" />
<set-payload value="dsadasd"/>
</flow>

<flow name="flow2">
<vm:inbound-endpoint path="foreach" doc:name="VM"/>
<logger message=" session var value is #[sessionVars.test] and payload is #[payload]" level="ERROR" doc:name="Logger"/>
</flow>
<flow name="flow3">
<vm:outbound-endpoint path="foreach" doc:name="VM"/>
</flow>

</mule>
Post your comments and suggestions.

Back to Featured Articles on Logo Paperblog