【问题标题】:Idiomatic way to content based routing with RxJava使用 RxJava 进行基于内容的路由的惯用方式
【发布时间】:2016-11-12 20:04:52
【问题描述】:

有没有人在 RxJava 或 Reactive Stream 中使用惯用的方式来处理 content based routing

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

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

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

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

谢谢你

【问题讨论】:

  • 你的意思是“惯用方式”吗?
  • 我很抱歉以惯用的方式,我的意思是使用一个内置的运算符。发送
  • 是的,我以为你的意思是惯用的方式,这很好,文字上写着“惯用的为什么”。

标签: rx-java reactive-programming project-reactor


【解决方案1】:

基于内容的路由是flatMap 的工作:

observable.flatMap(x -> {
    if (isA(x))
        return observableA(x);
    else 
        return observableB(x);
});

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-26
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      相关资源
      最近更新 更多