273.8. 将 Camel 数据处理到被动框架中
虽然被动流发布软件允许以单向方式交换数据,但 Camel 路由通常使用 in-out 交换模式(例如,定义 REST 端点和一般来说,每个请求都需要回复)。
在这些情况下,用户可以向流添加被动处理步骤,以增强 Camel 路由或使用被动框架定义整个转换。
例如,给定以下路由:
from("timer:clock")
.setBody().header(Exchange.TIMER_COUNTER)
.to("direct:reactive")
.log("Continue with Camel route... n=${body}");
from("timer:clock")
.setBody().header(Exchange.TIMER_COUNTER)
.to("direct:reactive")
.log("Continue with Camel route... n=${body}");被动处理步骤可以与 "direct:reactive" 端点关联:
CamelReactiveStreamsService camel = CamelReactiveStreams.get(context);
camel.process("direct:reactive", Integer.class, items ->
    Flowable.fromPublisher(items) // RxJava2
        .map(n -> -n)); // make every number negative
CamelReactiveStreamsService camel = CamelReactiveStreams.get(context);
camel.process("direct:reactive", Integer.class, items ->
    Flowable.fromPublisher(items) // RxJava2
        .map(n -> -n)); // make every number negativeCamel 路由中的数据流将由外部被动框架处理,然后继续 Camel 内处理流程。
这种机制也可用于以完全被动的方式定义 In-Out 交换。
详情请查看 Camel 示例(camel-example-reactive-streams)。