2015-05-22 19 views
7

我想Reactor 2x集成到现有的Spring 4应用REST请求的执行,其中resources可以相互独立获取过程中提高性能,排序的映射简化我们将作业并行化为多个线程,然后将它们连接到一个缓冲区中。多线程执行使用反应堆2.0

到目前为止,我们这个样本中的非簧环境中工作:

//Ordered resources to apply transformations. 
    List<Map<String, Object>> result; 

    result = Streams.from(resources) 
        .flatMap(m -> Streams.just(m) .dispatchOn(Environment.cachedDispatcher()) 
        .map(resourceToMapFunction::apply)) 
        .buffer().next().await(5, TimeUnit.SECONDS); 

在上面的示例中,我们应用使用resourceToMapFunction,然后用buffer()法加盟改造,打造Promise等待结果并返回result

我的第一个问题是,这是反应堆被假定使用的方式吗?我知道转换是正确应用的,但也许,我在Reactor新手没有使用正确的方式。

我的第二个问题是没有什么大不了的,但Reactor项目中是否有任何内容以resources输入中提供的相同顺序返回?由于这是在多个线程执行,我敢肯定答案不是,而且就像我说的那样,我的担心越少,但是反正要问。

最后一个问题,当我介绍这个代码我Spring项目转换失败,因为Bean依赖应用underlaying的转变是不是在执行线程,这事我能与Spring反应堆版本容易吗?如果是这样,是否有任何链接或文件显示如何做到这一点?

非常感谢!

何塞·路易斯·

回答

0

您是否尝试过做一个reduce而不是一个缓冲区?

+0

感谢您的回答,你能指点我使用reduce的示例代码吗?另外,如何使用它应用'Spring ApplicationContext'?即使用注入主线程的'Spring Beans'。我遵循这个例子:https://github.com/reactor/reactor-samples/blob/master/src/main/java/org/projectreactor/samples/SpringSamples.java并使它与'EventBus'一起作为POC工作,但是我的最终目标是使它与'Streams'一起工作。再次感谢您的帮助。 – jbarrueta