2017-07-09 3 views
0

Je travaille actuellement sur l'application Spring Boot et Spring Batch pour lire 200 000 enregistrements de la base de données, les traiter et générer des sorties XML.Spring Batch Partitiioning Exemple de configuration Java DBtoFile

J'ai écrit un programme Spring Batch à un seul thread qui utilise JDBCPagingItemReader pour lire un lot de 10K enregistrements de base de données et StaxEventItemReader pour générer cette sortie. Le processus total prend 30 minutes. Je veux améliorer ce programme en utilisant Spring Batch local Partitioning. Quelqu'un pourrait-il partager le code de configuration Java pour faire cette tâche de partitionnement Spring Batch qui va diviser le traitement en multi thread + fichiers multi .. J'ai essayé de multi-thread configuration Java, mais StaxEventItemReader est seul thread, donc cela ne fonctionnait pas. La seule façon que je vois est la partition.

Appréciez l'aide.

Répondre

1

Vous avez raison de dire que le partitionnement est la façon d'aborder ce problème. Je n'ai pas d'exemple de JDBC vers XML sur la façon de configurer un travail par lots partitionné, mais j'en ai un qui est CSV à JDBC dans lequel vous devriez pouvoir remplacer les ItemReader et ItemWriter par ceux dont vous avez besoin (JdbcPagingItemReader et StaxEventItemWriter respectivement). Cet exemple utilise Spring Cloud Task pour lancer les workers en tant que processus distants, mais si vous remplacez le partitionHandler par le TaskExecutorPartitionHandler (au lieu du DeployerPartitionHandler comme configuré), cela exécutera les partitions en interne en tant que threads.

https://github.com/mminella/S3JDBC