Статьи

ForEach против Splitter в муле

Этот пример приложения покажет разницу между 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"?>
 
    <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, являются их собственными.