Spring Batch mejora el rendimiento mediante la partición.
Necesito convertir el proyecto existente a un trabajo de Spring Batch para mejorar la velocidad del trabajo. Supongamos que tengo la primera tarea para recuperar una lista de datos de la base de datos y enviarla al listener. Por lo tanto, el siguiente paso puede recuperarla desde @BeforeStep y realizar algunas condiciones para obtener otra lista (10k-20k registros) y luego proceder a la lógica de negocios múltiple para cada registro.
Pero estoy atascado en cómo implementar este paso por partición en Spring Batch. Encontré todos los tutoriales que utilizan consultas directas en el lector e inyectadas por ExecutionContext en rangePartitioner. Pero no puedo seguir ese camino.
<job id="testJob" xmlns="http://www.springframework.org/schema/batch">
<step id="step1" next="step2">
<tasklet ref="driver"/>
<listeners>
<listener ref="promotionListener">
</listener>
</listeners>
</step>
<step id="step2">
<tasklet >
<chunk reader="bmtbBillGenReqReader"
processor="bmtbBillGenReqProcessor"
writer="bmtbBillGenReqWriter"
commit-interval="1">
</chunk>
</tasklet>
</step>
</job>
<bean id="promotionListener"
class="org.springframework.batch.core.listener.ExecutionContextPromotionListener">
<property name="keys">
<util:list>
<value>billGenRequests</value>
</util:list>
</property>
</bean>
Por favor, aconseje cómo puedo implementar la partición desde el paso2. ¿Quizás almacenar la nueva lista del paso2 en un archivo CSV o algo similar primero?
davy.ai
Para implementar la partición en Spring Batch, puedes utilizar la interfaz Partitioner para definir cómo se particiona los datos. Aquí te mostramos cómo puedes modificar tu configuración para implementar la partición:
Ten en cuenta que este es solo un ejemplo de cómo implementar la partición en Spring Batch. Hay otras estrategias de partición que puedes utilizar, como utilizar particiones remotas o lógica de particionamiento personalizada basada en los propios datos.</string,></string,>