Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring @Async не работает когда соответствует требованиям / 7 сообщений из 7, страница 1 из 1
15.02.2019, 13:06
    #39774417
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring @Async не работает когда соответствует требованиям
Всем привет!

Есть Spring boot проект, в котором есть метод, который отлично (асинхронно) работает в таком виде.
Код: java
1.
2.
3.
4.
@Async
    public User createAsync(User user)  {
        return repository.save(user);
    } 



Но возвращаемый тип не соответствует правилам асинхронного сервиса.
The method’s return type is CompletableFuture<User> instead of User, a requirement for any asynchronous service.

Переделываю так, чтоб соответствовал.
Код: java
1.
2.
3.
4.
5.
@Async
    public CompletableFuture<User> createAsync(User user)  {
        User result = repository.save(user);
        return CompletableFuture.completedFuture(result);
    } 


И асинхронность пропадает, почему, что я не понял?
...
Рейтинг: 0 / 0
15.02.2019, 13:09
    #39774424
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring @Async не работает когда соответствует требованиям
Imperous, непонятно, как вы поняли, что в первом случае метод работает как асинхронный?


Откуда происходит вызов createAsync?
...
Рейтинг: 0 / 0
15.02.2019, 13:27
    #39774450
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring @Async не работает когда соответствует требованиям
Озвериннепонятно, как вы поняли, что в первом случае метод работает как асинхронный?
+1, и непонятно как Вы поняли что во втором случае метод не работает как асинхронный?

Второй случай правильный, Вы получаете не результат выполнения, а Future, который позволит получить результат после того как он будет получен.
...
Рейтинг: 0 / 0
15.02.2019, 13:31
    #39774451
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring @Async не работает когда соответствует требованиям
KachalovОзвериннепонятно, как вы поняли, что в первом случае метод работает как асинхронный?
+1, и непонятно как Вы поняли что во втором случае метод не работает как асинхронный?

Второй случай правильный, Вы получаете не результат выполнения, а Future, который позволит получить результат после того как он будет получен.

он может быть не до конца правильный, если вызов происходит из того же класса, тогда аннотация будет игнорирована и и методпревратится в обычный синхроннный, которые выполняет операцию и оборачивает ее во future.
...
Рейтинг: 0 / 0
15.02.2019, 15:36
    #39774592
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring @Async не работает когда соответствует требованиям
ОзверинImperous, непонятно, как вы поняли, что в первом случае метод работает как асинхронный?

Когда проверял, то в метод createAsync вставил Thread.sleep(1000) - с ощутимой задержкой
Путем запуска списка с 20-ю юзерами и смотря в логи - было видно что залетало и вылетало не последовательно и быстро.
Кстати да, на самом деле возвращаемый юзер в данном случае не нужен, т.е. можно было сделать метод void.

ОзверинОткуда происходит вызов createAsync?
Вызов происходит из контроллера (другого класса) .


Во втором случае я наблюдал как последовательно обрабатывается каждый юзер через секунду.
...
Рейтинг: 0 / 0
15.02.2019, 15:47
    #39774608
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring @Async не работает когда соответствует требованиям
Imperous, дальше идет область гадания по картам таро...можно воспроизвести случай в минимальном окружении и выложить на гитхаб проект. Так будет проще для всех.
...
Рейтинг: 0 / 0
15.02.2019, 16:42
    #39774655
Imperous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring @Async не работает когда соответствует требованиям
ОзверинImperous, дальше идет область гадания по картам таро...можно воспроизвести случай в минимальном окружении и выложить на гитхаб проект. Так будет проще для всех.

Всем спасибо. Пока выковыривал код. Понял как оно работает и все встало на свои места.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring @Async не работает когда соответствует требованиям / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]