273.8. 将 Camel 数据处理到被动框架中
虽然被动流 发布程序 允许以单向的方式交换数据,但 Camel 路由通常使用内部交换模式(例如,定义 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 negative
Camel 路由中的数据流由外部被动框架处理,然后继续 Camel 中的处理流程。
这种机制也可用于以完全被动的方式定义内部交换。
详情请参阅 Camel 示例(camel-example-reactive-streams)。