273.8. 将 Camel 数据处理到被动框架中


虽然被动流 发布程序 允许以单向的方式交换数据,但 Camel 路由通常使用内部交换模式(例如,定义 REST 端点,通常要求每个请求都需要回复)。

在这些情况下,用户可以向流中添加被动处理步骤,以增强 Camel 路由或使用被动框架定义整个转换。

例如,给定以下路由:

from("timer:clock")
.setBody().header(Exchange.TIMER_COUNTER)
.to("direct:reactive")
.log("Continue with Camel route... n=${body}");
Copy to Clipboard Toggle word wrap

被动处理步骤可以与 "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
Copy to Clipboard Toggle word wrap

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
Copy to Clipboard Toggle word wrap

详情请参阅 Camel 示例(camel-example-reactive-streams)。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat