我使用Spring + Camel和Java应用程序,我无法理解如何在Camel配置中使用Loop。 骆驼文件建议:
<route>
<from uri="direct:b"/>
<loop>
<header>loop</header>
<to uri="mock:result"/>
</loop>
</route>
如何根据我的情况调整循环?
<route>
<from uri="myjms:queue:{{myqueue.name1}}"/>
...
<method bean="myProcessor" method="getSomeMyObjects"> <!-- returns Collection<MyObject> -->
<loop>
<header>?????</header> <!-- get single MyObject?.. how???.. -->
<to uri="myjms:queue:{{myqueue.name2}}"/>
</loop>
</rout>
内部bean:
<bean id="myProcessor" class="my.package.MyProcessor">
我已实施以下方法:
getSomeMyObjects() - returns Collection<MyObject>;
getSomeMyObject(int index) - returns single MyObject;
getSomeMyObjectsCount() - returns the number of objects inside Collection<MyObject>;
并且可以在必要时实施任何其他方法。
可以在Camel配置中使用循环来解决这个问题吗?
答案 0 :(得分:4)
您不需要使用循环。您需要将每个MyObject拆分为不同的主体并发送它们。使用splitter模式。
<route>
<from uri="myjms:queue:{{myqueue.name1}}"/>
...
<method bean="myProcessor" method="getSomeMyObjects"> <!-- returns Collection<MyObject> -->
<split>
<simple>${body}</simple>
<to uri="myjms:queue:{{myqueue.name2}}"/>
</split>
</rout>