У меня есть ограничение на конфигурацию базы данных для каждой транзакции, которая будет совершена в течение 15 минут. Это правило, определенное администратором базы данных, которое нельзя изменить. У меня есть тасклет Spring, который выполняет вызов покоя, который занимает более 15 минут. Когда я получил ответ, связь с БД истекает. Это вызывает сбой в моей транзакции.
Я пытался использовать аннотацию @ Asyn c для выполнения вызова rest в методе asyn c, поэтому транзакция на тасклете не будет ждать ответа и будет работать без проблем, но я не смог не удается заставить его работать.
Вот моя конфигурация:
<bean id="asyncRequestTaskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5"/>
</bean>
<task:annotation-driven executor="asyncRequestTaskExecutor"/>
Простой тасклет:
public class PerformSingleRestCallTasklet implements Tasklet {
@Override
public RepeatStatus execute(final StepContribution stepContribution, final ChunkContext chunkContext) throws Exception {
performRestCall();
return RepeatStatus.FINISHED;
}
@Async("asyncRequestTaskExecutor")
public void performRestCall() {
remotingService.createRequest()
.toUrl("asd")
.send();
}
}