2015-05-22 3 views
7

Я пытаюсь интегрировать Reactor 2x в существующую Spring 4 приложения для повышения производительности во время выполнения REST запроса, где resources могут быть выбраны независимо друг от друга, своего рода карту-свертка, где мы параллелизируйте задание на несколько потоков и затем присоедините их к буферу.исполнение Multithread на Spring 4 с помощью Reactor 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 зависимости применить нижележащее преобразование не в потоках исполнения, это то, что я могу сделать легко с версией Spring реактора? Если да, есть ли какая-либо ссылка или документ, который показывает, как это сделать?

Большое спасибо!

Хосе Луис

ответ

0

Вы пробовали делать reduce, а не буфер?

+0

Спасибо за ваш ответ, можете ли вы указать мне пример кода с помощью сокращения? Кроме того, как использовать его, используя «Spring ApplicationContext»? используйте «Весенние бобы», впрыскиваемые в основной поток. Я выполнил этот пример: https://github.com/reactor/reactor-samples/blob/master/src/main/java/org/projectreactor/samples/SpringSamples.java и сделал его работу с EventBus как POC, но моя конечная цель - работать с «Streams». Снова ваша помощь очень ценится. – jbarrueta