camel系列-loop

概念

Loop EIP 允许多次处理消息,每次迭代可能采用不同的方式。主要在测试期间有用。

即循环执行

需要注意的是,loop 并不是迭代器,如果要使用迭代器模式,应该使用 split。

使用场景:对同一消息进行重复处理,比如性能测试。

loop

1
2
3
4
5
6
7
<route>
<from uri="direct:a"/>
<loop>
<constant>8</constant>
<to uri="mock:result"/>
</loop>
</route>

表达式(expression):表示要循环的次数,例如上面constant 表达式返回的 8

copy 模式

1
2
3
4
5
6
7
8
9
10
11
12
<route>
<from uri="direct:start"/>
<!-- enable copy mode for loop eip -->
<loop copy="true">
<constant>3</constant>
<transform>
<simple>${body}B</simple>
</transform>
<to uri="mock:loop"/>
</loop>
<to uri="mock:result"/>
</route>

doWhile

1
2
3
4
5
6
7
8
9
10
11
<route>
<from uri="direct:start"/>
<loop doWhile="true">
<simple>${body.length} <= 5</simple>
<to uri="mock:loop"/>
<transform>
<simple>A${body}</simple>
</transform>
</loop>
<to uri="mock:result"/>
</route>

参考:

https://camel.apache.org/components/3.16.x/eips/loop-eip.html#_looping_modes