是否可以将Camel循环用于Java对象?

时间:2015-04-23 11:00:27

标签: apache-camel

我使用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配置中使用循环来解决这个问题吗?

1 个答案:

答案 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>