过滤器和骆驼选择之间的区别

时间:2018-05-15 11:38:31

标签: jboss apache-camel enterprise-integration

apache Camel中过滤器和选择之间有什么区别?

    from("direct:a")
        .choice()
            .when(header("foo").isEqualTo("bar"))
                .to("direct:b")
            .when(header("foo").isEqualTo("cheese"))
                .to("direct:c")
            .otherwise()
                .to("direct:d");

2 个答案:

答案 0 :(得分:2)

简而言之,过滤器就像单个java if语句,例如

if x = 2 {
  ...
}

在骆驼中:

.filter(header("foo").isEqualTo("bar"))
  ...
.end()

选择就像一个java if ... elseif ... elseif ... else语句,

if x = 2 {
  ...
} else if x = 3 {
  ...
}

在骆驼中:

.choice()
  .when(header("foo").isEqualTo("bar"))
    ...
  .when(header("foo").isEqualTo("chese"))
    ...
  .otherwise()
    ....
.end()

请注意,otherwise中的choice是可选的。

答案 1 :(得分:0)

此外,选择和过滤器执行相同的操作,其中过滤器中有其他属性Exchange,它将声明它是否已过滤。

  1. 选择版本2.0
  2. 可从2.5版过滤器