Java 8 和 Apache Camel 2.19.5 在这里。我有以下 bean 处理器:
@Component("foobarResolver")
public class FoobarResolver {
public List<Foobar> resolve(Fizzbuzz fizzbuzz) {
List<Foobar> foobars = new ArrayList<Foobar>();
// Use some logic in here to make the fizzbuzz populate the foobars list.
return foobars;
}
}
@Component("fizzbuzzProcessor")
public class FizzbuzzProcessor {
public FizzbuzzOutput process(Fizzbuzz fizzbuzz) {
// Blah whatever
}
}
以及以下骆驼路线:
<route id="fizzbuzzHandler">
<!-- XML '<fizzbuzz>' messages get sent here by an upstream process -->
<from uri="activemq:fizzbuzzes"/>
<!-- Use XStream to deserialize the XML into a 'Fizzbuzz' POJO instance -->
<unmarshal ref="xs"/>
<split>
<method ref="bean:foobarResolver"/>
<to uri="activemq:analyze"/>
</split>
<!-- Now assuming our body is once again the Fizzbuzz we can just continue as normal... -->
<!-- Process the fizzbuzz -->
<to uri="bean:fizzbuzzProcessor"/>
<!-- Send fizzbuzzProcessor's output to 'output' queue -->
<to uri="activemq:output"/>
</route>
如您所见,反序列化的Fizzbuzz
实例被发送到FoobarResolver
bean 处理器,后者将该实例转换为 a List<Foobar>
,然后将每个实例一个接一个地发送Foobar
到analyze
队列中。至少这就是我设计的意图!
我很好奇的是:分裂之后,交换体变成了什么?它是否“恢复”回Fizzbuzz
(这就是我想要的),还是交换体现在List<Foobar>
是由FoobarResolver
(这不是我想要的)产生的?如果身体现在是List<Foobar>
,我怎么能重新配置东西以便FizzbuzzProcessor
接收 aFizzbuzz
呢?