Как использовать asyn c в Spring Batch - PullRequest
0 голосов
/ 30 января 2020

У меня есть ограничение на конфигурацию базы данных для каждой транзакции, которая будет совершена в течение 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();
}

}

...