Этот пример приложения покажет разницу между Foreach и сплиттером в Mule версии 3.x. Разделитель коллекций разбивает входящий объект коллекции, а затем вам нужно установить агрегатор для сбора результирующих объектов. Для каждой области видимости есть область, которая не изменяет полезную нагрузку, и вы получаете один и тот же объект коллекции один раз для завершения каждого цикла.
| 
 01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
 | 
<?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" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsdhttp://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> | 
Оставьте свои комментарии и предложения.
| 
 Опубликовано на Java Code Geeks с разрешения Абхишека Сомани, партнера нашей программы JCG. Смотрите оригинальную статью здесь: ForEach против Splitter в муле Мнения, высказанные участниками Java Code Geeks, являются их собственными.  |