Chtijug springbatch 2011
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Chtijug springbatch 2011

  • 1,737 views
Uploaded on

http://chtijug.org/session-spring-batch-avec-ekino-le-29-novembre/ ...

http://chtijug.org/session-spring-batch-avec-ekino-le-29-novembre/

Nous avons le plaisir de vous annoncer que la prochaine session du Ch’ti JUG est prévue le 29 novembre 2011. Elle aura lieu à l’IUT A de Lille 1, boulevard Paul Langevin, à Villeneuve d’Ascq. Plan d’accès

Le thème de cette session est Spring Batch : un framework pour implémenter des traitements de masse en Java.

Cette présentation sera animée par Olivier Bazoud / @obazoud et Julien Jakubowski / @jak78.

Cette session est rendue possible grâce à Ekino / @3k1no.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,737
On Slideshare
1,734
From Embeds
3
Number of Embeds
2

Actions

Shares
Downloads
39
Comments
0
Likes
0

Embeds 3

http://paper.li 2
http://a0.twimg.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Ch’ti JUGSpring Batch Mardi 29 Novembre 2011 Olivier Bazoud Julien Jakubowski
  • 2. Le mot du sponsor de cette session
  • 3. Ekino / @3k1n0• Conception, développement et maintenance de dispositifs digitaux• 150 personnes – 50% de développeurs, 0% de régie• Digital – Mobile + HTML + RIA – JAVA + PHP + .NET• 6 pôles de compétences, 25 clients, 50 projets/an = 1 équipe
  • 4. Duchess France
  • 5. Duchess France - PrésentationCe quest le JDuchess ... Et ce quil nest pas !
  • 6. Duchess France - Léquipe @Audrey_Neveu @karesti @agnes_crepet @cfalguiere @Zazoun @dijouxellenne @MathildeLemee
  • 7. Duchess France - Objectifs Avoir une visibilité des femmes dans lIT ... … Et les inciter à participer aux conférences
  • 8. Duchess France - Les Actions
  • 9. Duchess France - En chiffre 70 membres 60 membres + de 700 followers
  • 10. Duchess France - Nous suivre http://jduchess.org/duchess-france/ duchessfr @duchessfr
  • 11. Merci de votre attention !
  • 12. • http://lille.startupweekend.org
  • 13. Ch’ti JUGSpring Batch Mardi 29 Novembre 2011 Olivier Bazoud Julien Jakubowski
  • 14. IntervenantsOlivier Bazoud @obazoud, Ekino @3k1n0 ISEN (Toulon) Architecte technique Java EE / Spring, Spring Batch, NoSQL, Node.js Co-auteur de « Spring Batch in Action » Spring User Group FranceJulien Jakubowski, @jak78, OCTO Technology ISEN (le vrai, de Lille) Architecte technique Spécialisé Java EE / Spring Chti JUG, Agile Tour Lille
  • 15. De quoi va-t-on parler ce soir ?• On va parler de batchs en Java• … et aussi de bière http://www.flickr.com/photos/fromeyetopixel/2559391584/
  • 16. Nos objectifsEn sortant de la salle, vous : Savez identifier certains problèmes récurrents avec les batchs écrits en Java Savez si Spring Batch est utile pour vous (ou pas) Avez intégré les notions principales … et quelques notions avancées Pouvez faire un batch « Spring Batch » demain
  • 17. Ce qui vous attend• Batch : de quoi parle-t-on ?• Pourquoi Spring Batch ?• Faisons ensemble un batch... – Introduction progressive des notions de Spring Batch• Retours dexpérience• Forces et faiblesses• Notions avancées - vote• Questions / Réponses
  • 18. Batch : de quoi parle-t-on ?Batch processing = répétition de traitements sur un ensemble de données…
  • 19. Batch : de quoi parle-t-on ?… potentiellement grands volumes… http://www.flickr.com/photos/claudiasofia99/2878579560/
  • 20. Batch : de quoi parle-t-on ?… sans intervention d’un utilisateur humain – pas d’interface homme-machine
  • 21. Batch : de quoi parle-t-on ?Exemples:• Import flat / XML dans une base de données• Mise à jour de données de référentiel• Intégration de flux financiers dans un SI• …
  • 22. Batch : de quoi parle-t-on ?Un batch n’est pas un scheduler• Cron, inotify, Quartz, $U…• Mais un scheduler peut le lancer
  • 23. Beer Batch• Caractéristiques : – Lire le fichier XML de recettes, au format BeerXML – Ecrire les recettes en base de données – Filtrer certaines recettes et créer un fichier de rejets
  • 24. Problèmes récurrents• Fiabilité
  • 25. Problèmes récurrents• Maintenabilité
  • 26. Problèmes récurrents• Réinvention de la roue… carrée
  • 27. Quand j’écris uneapplication web…
  • 28. Quand j’accède à une base de données…
  • 29. Et quand j’écris un batch ? Je suis… à poil ? http://www.flickr.com/photos/crystaljingsr/3914729343/sizes/o/in/set-72157622354789320/
  • 30. Et quand j’écris un batch ?Spring Batch offre pourtant une solution pour vous guiderlors de l’écriture de vos batchs en Java
  • 31. Spring Batch propose…• Un cadre• Un vocabulaire (domain language)• Traitement par lots (grands volumes de données)• Gestion des transactions• Flow, reprise sur erreur• Spring dans ses batchs Parallélisme Spring Batch Admin Partitionnement
  • 32. Spring BatchNotions de base
  • 33. BeerBatch V2• Ecrire la date de début du batch• Lire le fichier XML de recettes, au format BeerXML• Filtrer certaines recettes et créer un fichier de rejets• Ecrire en base de données Spring Batch
  • 34. Schéma du batch InitialStep InitialTasklet RecipeStep Chunk oriented taskletItemReader ItemProcessor ItemWriter
  • 35. Tasklet InitialStep InitialTasklet RecipeStep Chunk oriented taskletItemReader ItemProcessor ItemWriter
  • 36. Tasklet• Besoin – Effectuer une tâche unitaire• Exemples – Supprimer un répertoire et son contenu – Unzip d’un fichier – Appel d’une procédure stockée – Appel d’un web service
  • 37. Morceaux de code
  • 38. ItemReader InitialStep InitialTasklet RecipeStep Chunk oriented taskletItemReader ItemProcessor ItemWriter
  • 39. ItemReader• Besoin – Lire le XML de recettes• ItemReader – Fournit des items en entrée <xml> SELECT ... FROM ... 123;AB; 456;CD;
  • 40. Morceaux de code
  • 41. ItemProcessor InitialStep InitialTasklet RecipeStep Chunk oriented taskletItemReader ItemProcessor ItemWriter
  • 42. ItemProcessor• Besoin – Transforme, valide et / ou filtre une recette• ItemProcessor – Transforme un item en un autre – Filtrer ou rejeter un item – Emplacement pour les « règles métier »
  • 43. Morceaux de code
  • 44. Morceaux de code
  • 45. ItemWriter InitialStep InitialTasklet RecipeStep Chunk oriented taskletItemReader ItemProcessor ItemWriter
  • 46. ItemWriter• Besoin – Décharge les bières dans une base SQL• ItemWriter – Ecrit les items <xml> INSERT... INTO ... 123;AB; 456;CD;
  • 47. Morceaux de code
  • 48. Chunk InitialStep InitialTasklet RecipeStep Chunk oriented taskletItemReader ItemProcessor ItemWriter
  • 49. Chunk• Besoin – Lire, transformer et écrire• Chunk – Lire et transformer les données successivement – Ecrire le lot de données – Le commit-interval définit la taille du lot (différent de la taille du fichier) – Gestion de la transaction : Commit/Rollback
  • 50. Chunk
  • 51. Traitement par lots
  • 52. Morceaux de code
  • 53. Listener InitialStep InitialTasklet RecipeStep Chunk oriented taskletItemReader ItemProcessor ItemWriter
  • 54. Listener• Besoin – Création d’un fichier de rejet• Listener – Etre à l’écoute des évènements du batch
  • 55. Morceaux de code
  • 56. Morceaux de code
  • 57. Morceaux de code
  • 58. Step InitialStep InitialTasklet RecipeStep Chunk oriented taskletItemReader ItemProcessor ItemWriter
  • 59. Step• Besoin – Etape dans le processus du batch – Contrôle le workflow
  • 60. Job InitialStep InitialTasklet RecipeStep Chunk oriented taskletItemReader ItemProcessor ItemWriter
  • 61. Job• Besoin – Décrire les étapes du batch – Composé d’un ou plusieurs steps Spring Tools Suite
  • 62. Morceaux de code
  • 63. Lancer un job directement
  • 64. Lancer un job via un schedulerOn utilise ici Spring Scheduler.Il est indépendant de Spring Batch
  • 65. Lancer un jobvia un scheduler
  • 66. Tests• Tests unitaires facilités via le découpage Spring Batch – writers, processors etc...• Tests dintégration facilités par Spring – @RunWith – Step, Job
  • 67. Morceaux de code
  • 68. Morceaux de code
  • 69. Forces et faiblesses✔Fiabilité et bons patterns✔Tests unitaires et dintégration, TDD✔Batchs complexes mieux maintenables✔Bénéficie de fonctions avancées à moindre coût✔...the Spring way, intégration à Spring✔Productivité, à terme...✗… après avoir payé le ticket dentrée
  • 70. Retour d’expérience Ekino• Framework de batch – Moins de code produit, moins derreurs possibles – Plus de tests unitaires + intégrations• Mise en place par lexemple – Jai fait le premier batch pour montrer la voie – Un même vocabulaire aide à se comprendre• Répond à nos besoins même si les batchs sont différents au niveau métier
  • 71. Retour d’expérience Ekino• Nos batchs « Spring Batch » sont en SQL plutôt quen Hibernate• Spring Batch soccupe de la gestion transactionnelle• En moyenne – 15% - 50% de gain sur le temps de développement – 15% - 50% de gain au « runtime »• Gains plus impressionnants sur certains cas – XML 100Mo + SQL; Gain : de 60 mn à 8mn – 10 fichiers 4Mo + SQL; Gain : de 10mn à 1mn30s
  • 72. Des questions, avant la suite ?http://www.flickr.com/photos/crystaljingsr/3914729343/in/set-72157622354789320/
  • 73. Spring BatchAllons plus loin
  • 74. Recipe Maître détail Hop Hop HopR;Burton Ale;All Grain;Brad SmithH;Goldings, East Kent;United KingdomH;Northern Brewer;GermanyH;Fuggles;United KingdomENDR;Dry Stout;All Grain;Brad SmithH;Fuggles;United KingdomEND
  • 75. Un batch plus robuste reprise sur erreurs
  • 76. Flow Step A Step B
  • 77. Scaling et parallélismehttp://www.flickr.com/photos/claudiasofia99/2878579560/
  • 78. Spring Batch et Hibernate
  • 79. Spring Batch Admin
  • 80. Allons plus loin… Au choix!• Un cas un peu plus complexe – maître détail• La reprise sur erreurs• Un batch qui n’a pas un flow de bisounours…• Scaling et parallélisme• Spring Batch et Hibernate• Spring Batch Admin
  • 81. Maître détailR;Burton Ale;All Grain;Brad SmithH;Goldings, East Kent;United KingdomH;Northern Brewer;GermanyH;Fuggles;United KingdomENDR;Dry Stout;All Grain;Brad SmithH;Fuggles;United KingdomEND
  • 82. Maître détail RecipeStep Chunk oriented taskletItemReader ItemProcessor ItemWriter
  • 83. Maître détailDéclaration du Job
  • 84. Maître détailDéclaration du reader custom
  • 85. R;Burton Ale;All Grain;Brad SmithH;Goldings, East Kent;United KingdomH;Northern Brewer;GermanyH;Fuggles;United KingdomENDR;Dry Stout;All Grain;Brad SmithH;Fuggles;United KingdomEND
  • 86. Maître détailDéclaration du reader délégué
  • 87. A retenir• Implémentation de notre propre reader• Ré-utilisation d’un reader déjà fourni par Spring Batch• Ré-utilisation de ce que nous avons déjà codé précédemment
  • 88. Un batch plus robuste
  • 89. Reprise sur erreur• Un batch plus robuste (tolérant à l’erreur) c’est un batch : – Qui survit à quelques données invalides – Qui survit à une indisponibilité – Qu’on est en mesure de relancer
  • 90. Reprise sur erreur• Spring Batch out-of-the-box propose: – Sauter les erreurs non bloquantes (skip) – Recommencer un traitement (retry) – Déterminer si le batch est fini (completion) – Redémarrer un batch (restart)
  • 91. Reprise sur erreur
  • 92. Reprise sur erreur: Skip 0001;ABC;DEF; 0002;ABC;DEF; 000zxjgxdjghjsdfkud 0004;ABC;DEF;• Ne pas arrêter le batch si la lecture/process/écriture échoue• Personnaliser les cas de « skip »• Ecouter les cas de « skip »
  • 93. Reprise sur erreur: Skip– Si FlatFileException, Spring Batch skip l’item– Skip de 10 items max– Au-delà la step « failed »– Include/Exclude possible
  • 94. Reprise sur erreur: Skip• Personnaliser la gestion du « skip »• Par défaut: LimitCheckingItemSkipPolicy
  • 95. Reprise sur erreur: Skip• Configuration de la gestion du « skip »
  • 96. Reprise sur erreur: Skip• Un listener permet de traiter les items écartés• Les annotations existent aussi – @OnSkipInRead – @OnSkipInWrite – @OnSkipInProcess
  • 97. Reprise sur erreur: Retry
  • 98. Reprise sur erreur: Retryhttp://www.libertaland.com/2011/04/une-femme-de-75-ans-coupe-tout-linternet-en-armenie/
  • 99. Reprise sur erreur: Retry• Permet de relancer une opération si indispo temporaire• Personnaliser les cas de « retry »• Ecouter les cas de « retry »
  • 100. Reprise sur erreur: Retry– Si DLDAE, Spring Batch recommence– Retry 3 fois max– Au-delà la step « failed »– Include/Exclude possible
  • 101. Reprise sur erreur: Retry• Personnaliser le « retry »: RetryPolicy – SimpleRetryPolicy (défaut)• Stratégie entre 2 « retry »: BackoffPolicy – NoBackOffPolicy (défaut) – ExponentialBackOffPolicy vraiment utile
  • 102. Reprise sur erreur: Retry• Configuration de la gestion du « retry »
  • 103. Reprise sur erreur: Retry• Un listener permet de traiter les « retry »
  • 104. Reprise sur erreur: Retry• Pour les tasklets – RetryTemplate – RetryOperationsInterceptor avec de l’AOP
  • 105. Reprise sur erreur: Restart
  • 106. Reprise sur erreur: Restart• Même avec skip/retry, un batch peut planter• Il reste encore une solution • Nous pouvons redémarrer le batch
  • 107. Reprise sur erreur: Restart• Indique si le job est « restartable »• Indique le nombre max de « restart »
  • 108. Reprise sur erreur: Restart• La step est démarrée lors du restart même si elle a été terminée correctement
  • 109. Reprise sur erreur: Restart• Comment reprendre en plein milieu d’un chunk ?• Comment Spring Batch sait il où reprend ?
  • 110. Reprise sur erreur: Restart• Spring batch stocke des méta data
  • 111. Reprise sur erreur: Restart• Spring Batch persiste régulièrement les « ExecutionContext »• Ceci permet à Spring Batch de savoir où reprendre• C’est ce qui fait qu’un batch est « restartable »
  • 112. Reprise sur erreur: Restart• Si vous voulez que vos Reader/Writer custom soient restartables, vous devez les concevoir restartables!• Certains fournis par Spring Batch le sont, mais pas tous• Ce n’est pas toujours possible – ex: Writer JMS.
  • 113. Reprise sur erreur: Restart• ItemStream
  • 114. Reprise sur erreur: Restart• Exemple de Reader « restartable »
  • 115. Reprise sur erreur Conclusion• Nous avons appris comment: – Ecarter des items défectueux (skip) – Recommencer une step s’il y a une erreur temporaire (retry) – Implémenter notre propre stratégie de « skip » et « retry » – Redémarrer un job avec certains steps
  • 116. Gestion du flow
  • 117. Gestion du flowLe « batch bisounours » Step A Step B
  • 118. Gestion du flowExemple
  • 119. Gestion du flowExemple
  • 120. Gestion du flow• Le « batch complexe» Step Step Step Step Step Step Step Step Step
  • 121. Gestion du flow• Comment… – faire des flows non linéaires – piloter l’enchaînement des steps – passer des données entre steps
  • 122. Gestion du flow• Exemple plus simple ;) StepA FAILED StepAlert * StepB
  • 123. Gestion du flow
  • 124. Gestion du flow• Batch Status – Etat du job / step en cours d’exécution• Exit Status – Etat du job ou step après son exécution – C’est lui qui détermine le flow• Exemple – COMPLETED, STARTING, STARTED, STOPPING, STOPPED, FAILED,ABANDONED or UNKNOWN – C?T (CAT mais pas COUNT), C*T (CAT et COUNT)
  • 125. Gestion du flow• Créer et utiliser ses propres « exit status » – StepExecutionListener – JobDecider
  • 126. Gestion du flow• Utiliser ses propres « exit status » StepA COMPLETED WITH SKIPS StepC * StepB
  • 127. Gestion du flow• « exit status » + StepExecutionListener
  • 128. Gestion du flow• Configuration
  • 129. Gestion du flow• « exit status » + JobExecutionDecider
  • 130. Gestion du flow• Configuration
  • 131. Gestion du flow• « StepExecutionListener » ou « JobExecutionDecider » ?• JobExecutionDecider pour réutiliser plus facilement la logique de branchement
  • 132. Gestion du flow• Encore plus de contrôle: end, fail
  • 133. Gestion du flow• Partager des informations entre les steps – À la Spring:bean classic – A la Spring Batch: « Execution context » • 1 pour le Job et 1 par Step • C’est une Map sauvegardé dans les meta data • Attention au volume • Late bindings – #{jobExecutionContext[‘myKey]}
  • 134. Gestion du flow• Accès à ExecutionContext
  • 135. Gestion du flow• Configuration
  • 136. Gestion du flow Step A• Mutualiser les flows Step B Mon Flow Step C Step D
  • 137. Gestion du flow• Configuration
  • 138. Gestion du flow• Réutiliser un Job
  • 139. Gestion du flow• Conclusion, nous avons – Fait des flows non linéaires – Piloté l’enchaînement des steps – Passé des données entre steps – Mutualisé et réutilisé des jobs
  • 140. Scalinghttp://www.flickr.com/photos/claudiasofia99/2878579560/
  • 141. Scaling• Différentes stratégies possibles – Multi-threaded Step (single process) – Parallel Steps (single process) – Remote Chunking of Step (multi process) – Partitioning a Step (single or multi process)
  • 142. Spring Batch in Actionhttp://www.manning.com/templier
  • 143. Liens• Spring User Group Paris – http://groups.google.fr/group/sugfr• Le code de la présentation – https://github.com/obazoud/spring-batch-sug• Spring Batch 2.1.x – http://static.springsource.org/spring-batch• Articles sur le web – http://www.theserverside.com/news/1363855/Spring-Batch-Overview – http://www.infoq.com/presentations/syer-introducing-spring-batch – http://blog.zenika.com/index.php?post/2010/03/05/To-batch-or-not-to- batch – http://blog.octo.com/spring-batch-par-quel-bout-le-prendre/
  • 144. Questions ?
  • 145. Quizz
  • 146. Quizz 1Ce que nest pas Spring Batch ?1. un framework orienté batchs2. un scheduler3. un framework open source
  • 147. Quizz 2Qui est le principal leader du projet Spring Batch ?1. Antonio Goncalves2. Obi-wan Kenobi3. Dave Syer
  • 148. Quizz 3Comment sappelle le format standard de description de recette de bière ?1. BeerXML2. ISO-16643. ChtixML
  • 149. Quizz 4Qui vous offre un exemplaire de « Spring Batch in Action »?1. Sais pas, je viens de me réveiller2. Ekino3. Chubaka
  • 150. Quizz 5Comment sappelle la console d’admin de Spring Batch ?1. Coldfusion Web Console2. Spring Batch Admin3. PlayScala
  • 151. Quizz 6Qui vous offre le buffet de cette session ?1. Sais pas, je viens de me réveiller (mais c’est vrai qu’il fait faim!)2. Linus Torvald3. Ekino
  • 152. ROTIhttp://www.flickr.com/photos/34943981@N00/202923614/
  • 153. Session « Spring Batch »• Ekino – http://www.ekino.com / @3k1n0 – Olivier Bazoud @obazoud• Octo Technology – http://www.octo.com / @ OCTOTechnology – Julien Jakubowski @jak78
  • 154. Spring Batch et Hibernate
  • 155. Spring Batch et Hibernate• Raison d’utiliser Hibernate avec Spring Batch: code existant  rapidité de développement• Ca ne se fait pas sans dangers…
  • 156. Spring Batch et Hibernate• Overhead de Hibernate sur JDBC• Hibernate est stateful (par défaut) – 1M d’items lus = 1M maintenus en RAM  OutOfMemoryError
  • 157. Spring Batch et HibernateCorrectifs possibles pour pb stateful:• Ne pas faire d’Hibernate ;-)• Utiliser HibernateCustomItemReader – Session stateless• Ajuster le commit interval
  • 158. Spring Batch et Hibernate• OK je suis un bon élève, j’utilise HibernateCursorItemReader• Maintenant, je fonce…• Mais attention au select N+1
  • 159. Spring Batch et Hibernate• Pattern: « Driving Query Based ItemReaders »• Certaines bases de données (ex: DB2) – Pessimitic looking – Ouverture de curseurs sur des données importantes• Bonne pratique avec Hibernate• Prévient les LazyException
  • 160. Spring Batch et Hibernate• Principe – Le reader lit les ids via SQL • Select id from XXX where … – Le premier ItemProcessor transforme l’id en objet via Hibernate par exemple – Les autres processors font les traitements métiers –…
  • 161. Spring Batch Admin• Console Web pour Spring Batch – « Standalone » ou « Embedded » – API Rest – Uploader une nouvelle configuration – Uploader un fichier à traiter• « Customisable » – Base de données, Branding, UI, ..• Monitorer les batchs
  • 162. Spring Batch Admin • API REST
  • 163. Spring Batch Admin$ curl –s http://localhost:8080/spring-batch-admin-sample/jobs.json { "jobs": { "resource": "http://localhost:8080/spring-batch-admin-sample/jobs.json", "registrations": { "infinite": { "name": "infinite", "resource": "http://localhost:8080/spring-batch-admin-sample/jobs/infinite.json", "description": "No description", "executionCount": 0, "launchable": true, "incrementable": false }, "job1": { "name": "job1", "resource": "http://localhost:8080/spring-batch-admin-sample/jobs/job1.json", "description": "No description", "executionCount": 0, "launchable": true, "incrementable": true …
  • 164. Spring Batch Admin• Les jobs
  • 165. Spring Batch Admin• Lancement / Historique d’un job
  • 166. Spring Batch Admin• Lancer un job
  • 167. Spring Batch Admin• Détail d’un job execution
  • 168. Spring Batch Admin • Détail d’éxécution
  • 169. Spring Batch Admin / Monitoring• JMX / MBean – BatchMBeanExporter • Exporter un jobService • Voir les métriques des « Job/Steps Executions » – SLA StepExecutionServiceLevelMonitor • Permet de recevoir des notifications JMX si une Step met trop de temps• Utilisable aussi en Standalone
  • 170. Spring Batch Admin / Monitoring
  • 171. Spring Batch Admin / Monitoring
  • 172. Scalinghttp://www.flickr.com/photos/claudiasofia99/2878579560/
  • 173. Scaling
  • 174. Scaling• Différentes stratégies possibles – Multi-threaded Step (single process) – Parallel Steps (single process) – Remote Chunking of Step (multi process) – Partitioning a Step (single or multi process)
  • 175. Scaling• Multi-threaded Step – Une Step est multi threaded• Parallel Steps – Les Steps sont exécutées en parallèle• Remote Chunking of Step – Distribution des chunks• Partitioning a Step – Partage les données à travers les noeuds
  • 176. Scaling: Multi-threaded Step– Multi thread au niveau « Step »– Utilise un ThreadPoolTaskExecutor– Chaque thread construit un chunk– Les readers/writers sont thread-safe ? • La plus part non, ils sont stateful– « Process Indicator Pattern » • Lire les items ‘processed’ = false • Un ItemProcessor met ‘processed = true’
  • 177. Scaling: Multi-threaded Step
  • 178. Scaling: Step en parallèle• Executer plusieurs Step en parallèle• Mot clé « split » dans la configuration• Possibilité utiliser un ThreadPoolTaskExecutor
  • 179. Scaling: Step en parallèle
  • 180. Scaling: Remote Chunking• Répartition de la charge vers des slaves• Principe – Lecture sur le Master – Processor et Writer sur les slaves• Spring Batch propose que des interfaces• Spring Integration propose une implementation• La communication master/slave se fait à travers un MOM
  • 181. Scaling: Remote Chunking Master Chunk Processor Reader Chunk Provider Slave 1 Slave 2 Slave N Chunk Writer Chunk Writer Chunk WriterProcessor Processor Processor
  • 182. Scaling: Remote Chunking• Démo ?!
  • 183. Scaling: Partitioning• Répartir les données suivant une clé de partition – « Partitionner »• Traiter les données – « PartitionHandler »• Et vous pouvez combiner les techniques précédentes
  • 184. Scaling: Partitioning