0

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");
4

2 回答 2

5

简而言之,过滤器就像一条 javaif语句,例如

if x = 2 {
  ...
}

在骆驼中:

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

而选择就像一个javaif ... elseif ... elseif ... else语句,

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

在骆驼中:

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

请注意,otherwisechoice.

于 2018-05-16T09:55:06.420 回答
0

此外,Choice 和 filter 执行相同的操作,其中 Filter 有额外的属性Exchange将表明它是否被过滤。

  1. 选择从 2.0 版开始可用
  2. 过滤器从 2.5 版开始可用
于 2018-05-16T06:16:24.160 回答