2

Springバッチで単一のジョブを使用して、複数のステップを並行して実行しようとしています。これが私の構成の外観です。

<job id="gmegdc1" xmlns="http://www.springframework.org/schema/batch" >
        <split id="splitStep" task-executor="taskExecutor">
            <flow>
                <step id="step1" parent="simpleStep1">
                    <tasklet ref="gdcTasklet1" task-executor="taskExecutor1" throttle-limit="6" />          
                </step>
            </flow>
            <flow>
                <step id="step2" parent="simpleStep2">
                    <tasklet ref="gdcTasklet2" task-executor="taskExecutor2" throttle-limit="6" />
                </step>
            </flow>
            <flow>
                <step id="step3" parent="simpleStep3">
                    <tasklet ref="gdcTasklet3" task-executor="taskExecutor3" throttle-limit="6" />
                </step>
            </flow>
            <flow>
                <step id="step4" parent="simpleStep4">
                    <tasklet ref="gdcTasklet4" task-executor="taskExecutor4" throttle-limit="6" />
                </step>
            </flow>
        </split>    
    </job>

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
        <property name="corePoolSize" value="25" />                  
        <property name="maxPoolSize" value="25" />        
    </bean>

<bean id="taskExecutor1" class="org.springframework.core.task.SimpleAsyncTaskExecutor"/>
    <bean id="taskExecutor2" class="org.springframework.core.task.SimpleAsyncTaskExecutor"/>
    <bean id="taskExecutor3" class="org.springframework.core.task.SimpleAsyncTaskExecutor"/>
    <bean id="taskExecutor4" class="org.springframework.core.task.SimpleAsyncTaskExecutor"/>

各ステップで 6 つのスレッドを実行したかったのです。この構成では、ジョブを開始するたびに、異なるステップの組み合わせで一度に 8 つのスレッドしか実行されませんでした。このため、一部のステップが実行されず、すべてのスレッドが実行されている可能性があります。ここで何が問題なのかわかりません。

4

1 に答える 1