概念
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"/> <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