Как сделать асинхронное весеннее пакетное задание с другим заданием

Я пытаюсь создать пакетное асинхронное задание Spring с другим заданием. Скажем, работа-1 должна быть завершена, а работа-2 должна быть выполнена. Но проблема в том, что Job-1 ждет, пока Job-2 завершает свою работу, чего я не хочу. Я также использовал JobStep, но это происходит синхронно и не помогает. Кто-нибудь может мне помочь, как использовать Асинхронно, где Задание-1 не должно ждать, пока Задание-2 не будет завершено? Пример XML-кода ниже

<bean id="taskExecutorAsync" class="org.springframework.core.task.SimpleAsyncTaskExecutor" />
<bean id="jobLauncherAsync" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
        <property name="jobRepository" ref="jobRepository" />
        <property name="taskExecutor" ref="taskExecutorAsync" />
</bean>

<bean id="CreationProcess" class="test.CreationProcess">
        <property name="jobLauncher" ref="jobLauncherAsync" />
        <property name="jobRepository" ref="jobRepository" />
        <property name="jobExplorer" ref="jobExplorer" />           
</bean>

Спасибо

3 ответа

Я попытался создать отдельную тему, вернулся назад, и новая тема обновила детали. Невозможно создать новое асинхронное пакетное задание с пружиной в другом задании.

Короче говоря, вы не можете использовать JobStep, Причина в том, что Job это конечный автомат с каждым Step выступающей в качестве государства. Для того, чтобы Job чтобы перейти к следующему состоянию (то есть завершено в вашем случае использования), необходимо завершить текущее состояние (задание вашего ребенка).

Вы можете запускать задания из других заданий, но для этого вам нужно написать Tasklet запустить задание в новом потоке (используя TaskExecutor) и немедленно возвращайтесь.

Вы можете использовать исполнителя SimpleAsyncTaskExecutor, чтобы избежать блокировки.

Другие вопросы по тегам