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)。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.