Próbuję zintegrować Reactor 2x do istniejącego Spring 4
aplikacji w celu zwiększenia wydajności podczas wykonywania wniosku REST
gdzie resources
może zostać pobrane od siebie niezależne, rodzaj map-zmniejszenie gdzie zrównoleglić zadanie do wielu wątków, a następnie połączyć je w bufor.Multithread wykonanie na wiosnę 4 stosując Reactor 2.0
tej pory tę próbkę pracy w środowisku innym niż wiosną:
//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);
W powyższym przykładzie, możemy zastosować transformację przy użyciu resourceToMapFunction
a następnie na przyłączyć się metodą buffer()
utwórz Promise
czekać na wynik i zwrócić result
.
Moje pierwsze pytanie, czy w ten sposób Reactor ma być używany? Wiem, że transformacje są poprawnie zastosowane, ale być może nowicjusz w Reactor
nie używa czegoś we właściwy sposób.
Moje drugie pytanie, to nie jest wielka sprawa, ale czy jest coś w projekcie Reactor
, aby powrócić w tej samej kolejności podanej w wejściu resources
? Ponieważ jest to wykonywane w wielu wątkach, jestem pewien, że odpowiedź nie jest, i jak powiedziałem, to mniej z moich zmartwień, ale chciałem zapytać tak czy inaczej.
Ostatnie pytanie: kiedy wprowadzam ten kod do mojego projektu Spring
, transformacje się nie powiodły, ponieważ zależności Bean
w celu zastosowania transformacji podkładania nie występują w wątkach wykonawczych, czy jest to coś, co mogę z łatwością wykonać za pomocą wersji Spring Reactor? Jeśli tak, czy istnieje jakiś link lub dokument pokazujący, jak to zrobić?
Wielkie dzięki!
José Luis
Dzięki za odpowiedź, czy możesz wskazać mi przykładowy kod przy użyciu opcji zmniejszenia? Również, jak z niego korzystać stosując 'Spring ApplicationContext'? tj. użyć "fasoli sprężynowej" wstrzykniętej do głównego wątku. Poszedłem za tym przykładem: https://github.com/reactor/reactor-samples/blob/master/src/main/java/org/projectreactor/samples/SpringSamples.java i zmusiłem go do pracy z 'EventBus' jako POC, ale moim celem jest sprawienie, by działał z 'strumieniami '. Znowu twoja pomoc jest bardzo doceniana. – jbarrueta