Многопоточность в весеннем контроллере загрузки

2

Ниже приведен код в одном из моих контроллеров весны. В этом мне нужно сохранить некоторые данные в базе данных postgres с помощью многопоточности, поэтому я не жду, пока он сохранит данные в базе данных, и я могу отправить ответ обратно на вызываемый API. Как я могу добиться этого?

//billingLogService.saveBillingLogDetails(Object);
if (!Util.isNull(personId) && !Util.isNull(personConnectionData)) {
    return new Callable<Map<Long, PersonConnectionTo>>() {
        @Override
        public Map<Long, PersonConnectionTo> call() throws Exception {
            Map<Long, PersonConnectionTo> connectionTextMap =
                profileService.getconnectionTextForFocusCompany(focusCompanyId, personId, personConnectionData);
            return connectionTextMap;
        }
    };
}
  • 0
    Вы можете посмотреть на использование аннотации Spring @Async .
Теги:
spring-boot
multithreading
callable

1 ответ

2

Один из способов сделать - поместить всю логику (которую вы хотите запустить в отдельном потоке) в метод некоторого класса обслуживания.
затем
1. Аннотировать класс с помощью @Service или эквивалентного.
2. Метод аннотации с @Async
3. Используйте @EnableAsync
Этого должно хватить

  • 0
    Получение исключения WARN 9071 --- [cTaskExecutor-2] ohengine.jdbc.spi.SqlExceptionHelper: Ошибка SQL: 0, SQLState: 42883 ОШИБКА 9071 --- [cTaskExecutor-2] ohengine.jdbc.spi.SqlExceptionHelper ОШИБКА: оператор не выполняет не существует: bigint = bytea Подсказка: ни один оператор не соответствует заданному имени и типу (аргументам) аргумента. Возможно, вам придется добавить явные приведения типов. Позиция: 123 ОШИБКА 9071 --- [cTaskExecutor-2] .aiSimpleAsyncUncaughtExceptionHandler: Произошла непредвиденная ошибка при вызове асинхронного метода 'public void com.equilar.bsp.service.impl.BillingLogServiceImpl.saveConnectionText (java.lang.Long).
  • 0
    Это как-то связано с вашим кодом, а точно связано с выполнением в отдельном потоке

Ещё вопросы

Сообщество Overcoder
Наверх
Меню