Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在这种情况下,我能从反应式库中获益吗?_Java_Reactor_Rx Java - Fatal编程技术网

Java 在这种情况下,我能从反应式库中获益吗?

Java 在这种情况下,我能从反应式库中获益吗?,java,reactor,rx-java,Java,Reactor,Rx Java,应用1向应用2发送请求。应用程序2执行以下步骤并将响应返回给应用程序1。我想知道应用程序2是否能从使用RxJava、Reactor等反应性库中获益。如果是,请解释如何受益 向所有7个数据源服务发送HTTP Post请求 等待他们的响应并解析所有响应 合并所有响应 返回对应用程序1的响应 这是您可能会发现的反应式库的经典用例!:) “反应式”体系结构的关键部分是它们可以响应事件,而不是等待结果。RxJava通过可观察的来实现这一点,Reactor通过几种不同的机制来实现这一点。在Reactor中,

应用1向应用2发送请求。应用程序2执行以下步骤并将响应返回给应用程序1。我想知道应用程序2是否能从使用RxJava、Reactor等反应性库中获益。如果是,请解释如何受益

  • 向所有7个数据源服务发送HTTP Post请求
  • 等待他们的响应并解析所有响应
  • 合并所有响应
  • 返回对应用程序1的响应

  • 这是您可能会发现的反应式库的经典用例!:)

    “反应式”体系结构的关键部分是它们可以响应事件,而不是等待结果。RxJava通过
    可观察的
    来实现这一点,Reactor通过几种不同的机制来实现这一点。在Reactor中,您可以使用一个普通的
    Reactor
    并在
    事件上设置一个
    replyTo
    ,您可以使用
    承诺
    对值组成一个处理链,非常类似于RxJava的
    可观察
    ,您可以使用
    处理器
    进行高速环形缓冲区处理,或者可以使用
    ForkJoinPool
    进行简单的fork/join样式处理。当然,这有很多选择,但是每一个都是为了在特定的用例中工作而设计的,不会影响其他用例。反应堆框架不是一个单一的可调扳手。这是一套适合你需要的扳手

    在这种特殊情况下,重要的部分是通过并发执行大量工作来实现并行性,因为您的数据源IO可能正在阻塞线程。RxJava有一个可插拔的执行模型,但它的粒度相当粗。Reactor的优势之一是高效、细粒度的任务调度支持,以及您可以轻松地对结果做出反应


    由于您的用例非常简单,并且非常接近标准的
    ThreadPoolExecutor
    情况,因此我可能会尝试使用(这是全新的)。
    ForkJoinPool
    为您提供了一个单一的
    Promise
    ,它将您提交到池中的所有任务的结果连接起来,并由标准的
    ThreadPoolExecutor
    支持。它基本上是一个围绕标准线程池的“反应式”包装器,因此只需要很少的开销,但提供了对所有提交任务的完成作出反应的灵活性。它类似于RxJava的
    Observable.merge()

    这是您可能发现的反应式库的经典用例!)

    “反应式”体系结构的关键部分是它们可以响应事件,而不是等待结果。RxJava通过
    可观察的
    来实现这一点,Reactor通过几种不同的机制来实现这一点。在Reactor中,您可以使用一个普通的
    Reactor
    并在
    事件上设置一个
    replyTo
    ,您可以使用
    承诺
    对值组成一个处理链,非常类似于RxJava的
    可观察
    ,您可以使用
    处理器
    进行高速环形缓冲区处理,或者可以使用
    ForkJoinPool
    进行简单的fork/join样式处理。当然,这有很多选择,但是每一个都是为了在特定的用例中工作而设计的,不会影响其他用例。反应堆框架不是一个单一的可调扳手。这是一套适合你需要的扳手

    在这种特殊情况下,重要的部分是通过并发执行大量工作来实现并行性,因为您的数据源IO可能正在阻塞线程。RxJava有一个可插拔的执行模型,但它的粒度相当粗。Reactor的优势之一是高效、细粒度的任务调度支持,以及您可以轻松地对结果做出反应


    由于您的用例非常简单,并且非常接近标准的
    ThreadPoolExecutor
    情况,因此我可能会尝试使用(这是全新的)。
    ForkJoinPool
    为您提供了一个单一的
    Promise
    ,它将您提交到池中的所有任务的结果连接起来,并由标准的
    ThreadPoolExecutor
    支持。它基本上是一个围绕标准线程池的“反应式”包装器,因此只需要很少的开销,但提供了对所有提交任务的完成作出反应的灵活性。它类似于RxJava的
    Observable.merge()

    我知道:您想在这里使用
    反应式
    解决方案,但我想添加一些噪音。在EIP中,它调用
    splitaggregate
    ,Spring Integration提供了现成的解决方案。在这种情况下,拆分器可以将项目发送到
    ThreadPoolExecutor
    ,或者,如果需要,发送到Reactor,或者只发送到RingBuffer。每个
    数据源服务
    都应将其结果发送到
    聚合器
    ,最后一个服务只发送合并响应。@ArtemBilan我熟悉EIP,多年来一直使用camel和spring集成。但我的问题是关于在这种特定情况下采取反应式的好处。我知道:您想在这里使用
    反应式
    解决方案,但我想添加一些噪音。在EIP中,它调用
    splitaggregate
    ,Spring Integration提供了现成的解决方案。在这种情况下,拆分器可以将项目发送到
    ThreadPoolExecutor
    ,或者,如果需要,发送到Reactor,或者只发送到RingBuffer。每个
    数据源服务
    都应将其结果发送到
    聚合器
    ,最后一个服务只发送合并响应。@ArtemBilan我熟悉EIP,多年来一直使用camel和spring集成。但我的问题是关于在这种特殊情况下采取反应式的好处。如果我想继续,即使7个数据源中的某些数据源出现故障,该怎么办?对于这个场景,你建议哪一个:RxJava还是Reactor?我想将线程管理委托给Spring的TaskExec