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

0 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");
Run Code Online (Sandbox Code Playgroud)

Cla*_*sen 5

简而言之,过滤器就像一个单独的 javaif语句,例如

if x = 2 {
  ...
}
Run Code Online (Sandbox Code Playgroud)

在骆驼中:

.filter(header("foo").isEqualTo("bar"))
  ...
.end()
Run Code Online (Sandbox Code Playgroud)

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

if x = 2 {
  ...
} else if x = 3 {
  ...
}
Run Code Online (Sandbox Code Playgroud)

在骆驼中:

.choice()
  .when(header("foo").isEqualTo("bar"))
    ...
  .when(header("foo").isEqualTo("chese"))
    ...
  .otherwise()
    ....
.end()
Run Code Online (Sandbox Code Playgroud)

请注意,otherwisechoice.