Spring Batch Multi Threading - ¿Cómo hacer que cada hilo lea registros únicos?

Esta pregunta se ha hecho muchas veces en muchos foros. Pero no veo una respuesta que me quede bien. Estoy tratando de implementar el paso de subprocesos múltiples en mi implementación por lotes de primavera.

Tenga una tabla de preparación con 100k registros

Quiero procesarlo en 10 subprocesos de intervalo de confirmación 300 por subproceso, por lo que 3000 registros en cualquier momento.

Definí un ejecutor de tareas y lo referí dentro del paso que quería multihilo

Mi idea es que primero obtendría el tamaño del grupo de subprocesos (10) y actualizaría la columna thread_id con un valor (puede ser 1-10) para cada uno de los 100k registros. En este caso de 10 subprocesos y 100k registros, por lo que a 10k registros se les asignará una identificación; estoy tratando de implementar un stagingteplistener para hacer esto.

escribió un lector para esta tabla de etapas. el ejecutor de tareas creará 10 lectores y cada lector debe leer 300 registros diferentes y procesarlos. Ahora, ¿cómo paso una identificación común entre el oyente de pasos y el lector para que cada hilo tenga su propio conjunto de registros para procesar?

A partir de ahora solo tengo una JVM. Así que estoy pensando en hacer esto en el paso Multi Threaded en lugar de pensar en un enfoque basado en particiones.

Por favor ayuda.....

Remití el libro de lotes de Spring Pro y creé un receptor de etapas que acepta una identificación de ejecución del xml de configuración de trabajo usando los parámetros de trabajo como se muestra a continuación

<beans:bean id="stagingStepListener"
class="com.apress.springbatch.statement.listener.StagingStepListener" scope="step">
<beans:property name="dataSource" ref="dataSource"/>
<beans:property name="tableName" value="transaction"/>
<beans:property name="whereClause"
value="where jobId is null and processed is null"/>
<beans:property name="jobId" value="#{jobParameters[run.id]}"/>
</beans:bean>

¿Qué no encuentro es esto? ¿De dónde viene este "run.id"? No veo eso en ningún lugar del libro. Copié la misma implementación en mi lote de primavera y cuando lo ejecuto veo una excepción que dice que run.id no es identificable. Por favor, ayúdame sobre cómo hacer esto.

Respuestas a la pregunta(2)

Su respuesta a la pregunta