gpt4 book ai didi

java - Camel 选择举例

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:13:39 24 4
gpt4 key购买 nike

我有 2 个 POJO:

public class Witch {
private Broom broom;
private List<Spell> spells;

// constructors, getters/setters, etc.
}

public class ValidatedWitches {
private List<Witch> goodWitches
private List<Witch> badWitches;

// constructors, getters/setters, etc.
}

我有一个我写的 Camel 处理器,它会产生一个 ValidatedWitches实例(同样由 2 个 List<Witch> 组成):

public class WitchValidator implements Processor {
@Override
public void process(Exchange exchange) {
List<Witch> witchesToValidate = (List<Witch>)exchange.getIn().getBody();

ValidatedWitches validated = validate(witchesToValidate);

exchange.getOut().setBody(validated);
}

private ValidatedWitches validate(List<Witch> toValidate) {
// For each witch, determines if it is a good witch, or a bad witch,
// and places it on an appropriate list.
List<Witch> good = new ArrayList<Witch>();
List<Witch> bad = new ArrayList<Witch>();

// etc...

return new ValidatedWitches(good, bad);
}
}

我现在想以一种方式路由我的好女巫列表,以及另一种方式的坏女巫列表:

<route id="witch-route">
<!-- Everything before my WitchValidator component... -->

<to uri="bean:witchValidator?method=process" />

<choice>
<when>
<simple>???</simple>
<to uri="direct:goodWitches" />
</when>
<when>
<simple>???</simple>
<to uri="direct:badWitches" />
</when>
</choice>
</route>

我可以在我的 <choice> 里放什么?采取ValidatedWitches.getGoodWitches()并将它们路由到 direct:goodWitches , 并采取 ValidatedWitches.getBadWitches()并将它们路由到 direct:badWitches

最佳答案

A <choice > 是其中之一,因此在您的示例中,您只能到达一个目标 URI。因此,您可能需要添加 <split><choice> 之前这样您就可以评估两个单独的消息。

参见 splitter对于那里的选项,例如,您可能希望使用一种方法创建自己的 POJO,该方法返回两个 ValidatedWitches 对象的列表 - 一个仅填充“goodWitches”集合,一个仅填充“badWitches”集合。

有很多predicate选项可用,但一个简单的方法是检查每个数组是否为空。

那么你的路线可能看起来像这样:

<to uri="bean:witchValidator?method=process" />
<split>
<method beanType="SPLITTER_CLASS_NAME" method="SPLITTER_METHOD" />
<choice>
<when>
<simple>${body.goodWitches.size} > 0</simple>
<to uri="direct:goodWitches" />
</when>
<when>
<simple>${body.badWitches.size} > 0</simple>
<to uri="direct:badWitches" />
</when>
</choice>
</split>

要点:

  • Splitter 应该返回两个或多个对象的集合
  • 选择需要能够区分拆分对象

关于java - Camel 选择举例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20669070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com