#java #sprin&-boot #hibernate #jpa #asynchronous
#java #весенняя загрузка #переход в спящий режим #jpa #асинхронный
Вопрос:
Я пытаюсь вызвать метод асинхронно с помощью CompleteableFuture в java
Как показано ниже:
@Transactional(propa&ation=Propa&ation.Required,readOnly=false)
public boolean updateStatusandMove(){
//update value in database
//move file via rest service
}
Теперь этот метод вызывается асинхронно, с несколькими завершаемыми фьючерсами.
В каком-то завершаемом будущем сбой, а в каком-то успешный, в зависимости от доступности папки при перемещении файла. Для тех, у кого произошел сбой из-за перемещения файла, возникает исключение httpserver, значения базы данных, которые были обновлены перед перемещением, должны быть откатаны, но этого не происходит. Итак, короче говоря, транзакционный откат не происходит в завершаемом будущем. но если этот метод выполняется синхронно без завершаемого будущего, то происходит откат. Используется транзакционная аннотация, и это приложение sprin& boot.
ExecutorsService service=Executors.newFixedThreadpool(50);
for(int i=0;i<10;i )
{
Callable<CompletebleFuture<Boolean&&t;&&t; task=()-&&t;&etcompletefuture(requestValues) //values from request will be passed
Future<CompleteableFuture<Boolean&&t;&&t; ftr=service.submit(task);
}
public CompleteableFuture<Boolean&&t; &etcompletefuture(requestValues){
Boolean ac=updateStatusandMove();
return CompleteableFuture.completedFuture(ac);
}
@Transactional(propa&ation=Propa&ation.Required,readOnly=false)
public boolean updateStatusandMove(){
//update value in database
//move file via rest service
}