273.7. 请求转换至 Camel
某些 Camel DSL 中定义的路由可以在被动流框架内使用,以执行特定的转换(相同的机制也可用于对 http 端点发送数据并继续)。
以下代码片段演示了 RxJava 功能代码如何请求加载和编译文件到 Camel 的任务。
CamelReactiveStreamsService camel = CamelReactiveStreams.get(context);
// Process files starting from their names
Flowable.just(new File("file1.txt"), new File("file2.txt"))
.flatMap(file -> camel.toStream("readAndMarshal", String.class))
// Camel output will be converted to String
// other steps
.subscribe();
为了正常工作,在 Camel 上下文中应定义类似如下的路由:
from("reactive-streams:readAndMarshal")
.marshal() // ... other details
273.7.1. 使用直接 API 请求转换 Camel 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
另一种方法是直接在被动流中使用 URI 端点:
CamelReactiveStreamsService camel = CamelReactiveStreams.get(context);
// Process files starting from their names
Flowable.just(new File("file1.txt"), new File("file2.txt"))
.flatMap(file -> camel.to("direct:process", String.class))
// Camel output will be converted to String
// other steps
.subscribe();
当使用 to () 方法而不是 toStream 时,不需要使用"reactive-streams:"端点(虽然它们在 hood 下使用了)来定义路由。
在这种情况下,Camel 转换可以只是:
from("direct:process")
.marshal() // ... other details