273.8. 将 Camel 数据处理为被动框架
虽然重新活动流 发布程序 允许以单向的方式交换数据,但 Camel 路由通常使用外部交换模式(例如,定义 REST 端点,一般是为每个请求需要回复)。
在这些情况下,用户可以向流添加被动处理步骤,以增强 Camel 路由或使用被动框架定义整个转换。
例如,给定以下路由:
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
Camel 路由中的数据流将由外部被动框架处理,然后在 Camel 中继续处理流。
这种机制也可用于以完全被动的方式定义非外包交换。
CamelReactiveStreamsService camel = CamelReactiveStreams.get(context); // requires a rest-capable Camel component camel.process("rest:get:orders", exchange -> Flowable.fromPublisher(exchange) .flatMap(ex -> allOrders())); // retrieve orders asynchronously
有关详细信息,请参阅 Camel 示例(camel-example-reactive-streams)。