1

有没有人知道在 RxJava 或 Reactive Stream 中进行基于内容的路由的惯用方式?

我可以看到如何使用地图过滤器和转换等标准运算符创建反应式消息处理管道。

但我看不出一个惯用的为什么使用运算符在几个可能的管道之间切换。
我希望能够根据一个初始输入对象或映射触发多个处理管道中的一个,以便根据输入映射或对象的内容选择不同的管道。

这个想法是我需要向外部 api 发出几个可能的请求,而决定要触发的 api 和管道的因素取决于我的控制器的输入对象。

我知道这可以通过 Spring 集成或 Camel 来完成,但我的用例不需要集成引擎的全部灵活性,因为它能够处理网络上的延迟。

非常感谢你

4

2 回答 2

3

基于内容的路由适用于flatMap

observable.flatMap(x -> {
    if (isA(x))
        return observableA(x);
    else 
        return observableB(x);
});
于 2016-11-12T20:09:51.730 回答
0

您也可以使用运营商 GroupBy 它允许您发送不同的项目组http://reactivex.io/documentation/operators/groupby.html

您可以在此处查看 groupBy 的一些示例。https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/transforming/ObservableGroupBy.java

于 2016-11-13T09:14:15.070 回答