加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Camel CBRs和POJO属性检查

发布时间:2020-12-15 08:49:53 所属栏目:Java 来源:网络整理
导读:我有一个路由Order实例的Camel路由: from("direct:start") .choice() .when(order.getProduct() == Product.Widget) .to("direct:widgets") .when(order.getProduct() == Product.Fizz) .to("direct:fizzes") .otherwise() .to("direct:allOtherProducts");
我有一个路由Order实例的Camel路由:

from("direct:start")
    .choice()
        .when(order.getProduct() == Product.Widget)
            .to("direct:widgets")
        .when(order.getProduct() == Product.Fizz)
            .to("direct:fizzes")
        .otherwise()
            .to("direct:allOtherProducts");

因此,如果特定订单是Widget的订单,则需要将其路由到direct:小部件等.

当()方法时,我会扼杀每个内容.我所拥有的不是合法的Camel DSL语法,用于说明我想要完成的任务.

所以我问:我在每个(…)方法中放入什么来完成我正在寻找的路由类型?提前致谢!

解决方法

你应该将order.getProduct()的值放在标题中并像这样使用它::

from("direct:start")
        .choice()
            .when(header("product").isEqualTo(Product.Widget))
                .to("direct:widgets")
            .when(header("product").isEqualTo(Product.Fizz))
                .to("direct:fizzes")
            .otherwise()
                .to("direct:allOtherProducts");

编辑:

您可以使用一个进程(即:在DSL中):

<route id="foo">
    <from uri="direct:start"/>
    <process ref="beanProcessor" />
    <choice>
        <when>
            ...
        </when>
        <when>
            ...
        </when>
        <otherwise>
            ...
        </otherwise>
    </choice>

Bean声明:

<bean id="beanProcessor" class="MyProcessor" />

班级 :

public class MyProcessorimplements Processor {

     @Override
     public void process(Exchange exchange) throws Exception {
         exchange.getIn().setHeader("headerName",yourOrderObject);
     }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读