Aktywne Wpisy

koronawirus +905
Powiedzcie mi, co się stało, że Wykop stał się aż tak bardzo odklejoną i toksyczną społecznościa, która nienawidzi dosłownie każdego? Kiedyś był żarty, że wstyd przeglądać w miejscu publicznym wykop, bo b--ń boże ktoś zauważy. Teraz to nie są żarty, bo tak jest naprawdę. Zaglądam na ten portal od ponad 13 lat i teraz naprawdę zrobił się z tego ściek. Zalało moje miasto, w p---u szkód, ludzie się jednoczyli i ustawiali wory,

jakubixxx +43
#powodz nawet piłkarze zarabiający ciężkie pieniądze się pofatygowali w porównaniu do ukrainców
źródło: 1000020632
Pobierz




Potrzebuję wykonać n (dynamiczny parametr, ale powiedzmy < 30) niezależnych od siebie 'ciężkich' zadań (baza, http) w jednym requeście i odesłać zbiorczy wynik (nie ma możliwości zrobienia tego za jednym razem). W jaki sposób zrobić to najefektywniej?
Z tego, co po znalazłem w Internecie wymyśliłem coś takiego:
1) Controller odbiera żądanie i oddelegowuje zadanie do serwisu
2) Metoda w serwisie ma adnotację @ Async, wykonuje się to w osobnym wątku
3) W środku metody serwisu tworzę n obiektów CompletableFuture poprzez CompletableFuture.allOf() i wewnątrz nich wykonuję obilczenia
4) Z List robię CompletableFuture w ten sposób https://stackoverflow.com/a/30026710
5) Serwis zwraca tego futura do kontrolera
6) Metoda w Controllerze zwraca Callable z wynikiem tego, co zwróci serwis (wtedy Spring niby wie, że tam są jakieś rzeczy wykonywane ciężkie)
Powyższe działa i się sprawuje nawet dobrze, ale nie wiem czy nie robię czegoś nadmiarowo / nieefektywnie i nie mam pewności czy to nie jebnie w którymś momencie ( ͡° ͜ʖ ͡°)
Jakieś pomysły, opinie?