Soumettre la recherche
Mettre en ligne
Breizhjug spring batch 2011
•
Télécharger en tant que PPTX, PDF
•
1 j'aime
•
1,322 vues
Olivier BAZOUD
Suivre
Présentation de Spring Batch au Breizhjug par @obazoud et @jak78
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 119
Télécharger maintenant
Recommandé
Spring Batch - concepts de base
Spring Batch - concepts de base
Spring User Group France
Spring Batch Avance
Spring Batch Avance
Olivier BAZOUD
WS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - Xebia
Olivier BAZOUD
Spring Batch 17-05-2011
Spring Batch 17-05-2011
Normandy JUG
Spring Batch ParisJUG
Spring Batch ParisJUG
Julien Jakubowski
Chtijug springbatch 2011
Chtijug springbatch 2011
Olivier BAZOUD
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Julien Jakubowski
Paris JUG Spring Batch
Paris JUG Spring Batch
Olivier BAZOUD
Recommandé
Spring Batch - concepts de base
Spring Batch - concepts de base
Spring User Group France
Spring Batch Avance
Spring Batch Avance
Olivier BAZOUD
WS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - Xebia
Olivier BAZOUD
Spring Batch 17-05-2011
Spring Batch 17-05-2011
Normandy JUG
Spring Batch ParisJUG
Spring Batch ParisJUG
Julien Jakubowski
Chtijug springbatch 2011
Chtijug springbatch 2011
Olivier BAZOUD
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Julien Jakubowski
Paris JUG Spring Batch
Paris JUG Spring Batch
Olivier BAZOUD
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
Ippon
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Ippon
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Ippon
Présentation1
Présentation1
Boulkenafet samir
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computing
Ippon
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
Ippon
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Ippon
Spring 3 en production
Spring 3 en production
Julien Dubois
Présentation du retour d'expérience sur Git
Présentation du retour d'expérience sur Git
Ippon
Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016
Ippon
Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)
Eric SIBER
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
Stéphane Traumat
Nouveau look pour une nouvelle vie, version spéciale Ippon
Nouveau look pour une nouvelle vie, version spéciale Ippon
Julien Dubois
Spring & SpringBatch FR
Spring & SpringBatch FR
Marouan MOHAMED
JPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à Achilles
Ippon
Voxxeddays lux 2018 apres java 8, java 9 et 10
Voxxeddays lux 2018 apres java 8, java 9 et 10
Jean-Michel Doudoux
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
Arnaud Héritier
Node.js, le pavé dans la mare
Node.js, le pavé dans la mare
Valtech
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
Microsoft
Backday xebia - Chercher la performance efficacement
Backday xebia - Chercher la performance efficacement
Publicis Sapient Engineering
Spring Batch Performance Tuning
Spring Batch Performance Tuning
Gunnar Hillert
Spring batch for large enterprises operations
Spring batch for large enterprises operations
Ignasi González
Contenu connexe
Tendances
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
Ippon
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Ippon
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Ippon
Présentation1
Présentation1
Boulkenafet samir
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computing
Ippon
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
Ippon
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Ippon
Spring 3 en production
Spring 3 en production
Julien Dubois
Présentation du retour d'expérience sur Git
Présentation du retour d'expérience sur Git
Ippon
Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016
Ippon
Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)
Eric SIBER
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
Stéphane Traumat
Nouveau look pour une nouvelle vie, version spéciale Ippon
Nouveau look pour une nouvelle vie, version spéciale Ippon
Julien Dubois
Spring & SpringBatch FR
Spring & SpringBatch FR
Marouan MOHAMED
JPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à Achilles
Ippon
Voxxeddays lux 2018 apres java 8, java 9 et 10
Voxxeddays lux 2018 apres java 8, java 9 et 10
Jean-Michel Doudoux
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
Arnaud Héritier
Node.js, le pavé dans la mare
Node.js, le pavé dans la mare
Valtech
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
Microsoft
Backday xebia - Chercher la performance efficacement
Backday xebia - Chercher la performance efficacement
Publicis Sapient Engineering
Tendances
(20)
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Présentation1
Présentation1
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computing
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Spring 3 en production
Spring 3 en production
Présentation du retour d'expérience sur Git
Présentation du retour d'expérience sur Git
Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016
Spring Meetup Paris - Back to the basics of Spring (Boot)
Spring Meetup Paris - Back to the basics of Spring (Boot)
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
Nouveau look pour une nouvelle vie, version spéciale Ippon
Nouveau look pour une nouvelle vie, version spéciale Ippon
Spring & SpringBatch FR
Spring & SpringBatch FR
JPA avec Cassandra, grâce à Achilles
JPA avec Cassandra, grâce à Achilles
Voxxeddays lux 2018 apres java 8, java 9 et 10
Voxxeddays lux 2018 apres java 8, java 9 et 10
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
Node.js, le pavé dans la mare
Node.js, le pavé dans la mare
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
Backday xebia - Chercher la performance efficacement
Backday xebia - Chercher la performance efficacement
En vedette
Spring Batch Performance Tuning
Spring Batch Performance Tuning
Gunnar Hillert
Spring batch for large enterprises operations
Spring batch for large enterprises operations
Ignasi González
Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.
Raffael Schmid
ECM & SharePoint 2013
ECM & SharePoint 2013
Michael Nokhamzon
Parallel batch processing with spring batch slideshare
Parallel batch processing with spring batch slideshare
Morten Andersen-Gott
La gestion des archives avec Alfresco
La gestion des archives avec Alfresco
Savoir-faire Linux
En vedette
(6)
Spring Batch Performance Tuning
Spring Batch Performance Tuning
Spring batch for large enterprises operations
Spring batch for large enterprises operations
Spring Batch - Lessons Learned out of a real life banking system.
Spring Batch - Lessons Learned out of a real life banking system.
ECM & SharePoint 2013
ECM & SharePoint 2013
Parallel batch processing with spring batch slideshare
Parallel batch processing with spring batch slideshare
La gestion des archives avec Alfresco
La gestion des archives avec Alfresco
Similaire à Breizhjug spring batch 2011
Sug spring batch
Sug spring batch
Julien Jakubowski
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
JUG Lausanne
20180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.3
Benoit Fillon
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
VISEO
SkillValue LesJeudis Master Class React Native
SkillValue LesJeudis Master Class React Native
Benoit Fillon
REX react native
REX react native
Florent Le Gall
La mise en cache et ses secrets
La mise en cache et ses secrets
Aymeric Bouillat
Améliorer l'implémentation du feature flipping
Améliorer l'implémentation du feature flipping
Dorra BARTAGUIZ
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
Sébastien Le Marchand
Optimiser réellement le référencement naturel de WordPress
Optimiser réellement le référencement naturel de WordPress
Daniel Roch - SeoMix
GUSS - CRITEO Meetup Scale SQL for the Web
GUSS - CRITEO Meetup Scale SQL for the Web
GUSS
Supports de cours Fit4Digital future - CMS
Supports de cours Fit4Digital future - CMS
Annabelle Buffart
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-side
maru.maru
What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015
Wisembly
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
TheFamily
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds Java
Cédric Leblond
CocoaHeads Rennes #10 : Mock Objects
CocoaHeads Rennes #10 : Mock Objects
CocoaHeadsRNS
Dev opsday case study
Dev opsday case study
Radoine Douhou
Gradle_BreizJUG
Gradle_BreizJUG
Gregory Boissinot
Responsive logic - Kiwiparty
Responsive logic - Kiwiparty
Julien Cabanès
Similaire à Breizhjug spring batch 2011
(20)
Sug spring batch
Sug spring batch
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
20180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.3
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
SkillValue LesJeudis Master Class React Native
SkillValue LesJeudis Master Class React Native
REX react native
REX react native
La mise en cache et ses secrets
La mise en cache et ses secrets
Améliorer l'implémentation du feature flipping
Améliorer l'implémentation du feature flipping
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
Optimiser réellement le référencement naturel de WordPress
Optimiser réellement le référencement naturel de WordPress
GUSS - CRITEO Meetup Scale SQL for the Web
GUSS - CRITEO Meetup Scale SQL for the Web
Supports de cours Fit4Digital future - CMS
Supports de cours Fit4Digital future - CMS
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-side
What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
Migrer de Jenkins vers Azure DevOps les Builds Java
Migrer de Jenkins vers Azure DevOps les Builds Java
CocoaHeads Rennes #10 : Mock Objects
CocoaHeads Rennes #10 : Mock Objects
Dev opsday case study
Dev opsday case study
Gradle_BreizJUG
Gradle_BreizJUG
Responsive logic - Kiwiparty
Responsive logic - Kiwiparty
Breizhjug spring batch 2011
1.
Spring Batch
Lundi 6 Juin 2011 Copyright © BreizhJug
2.
Intervenants
Olivier Bazoud, @obazoud, Ekino (FullSIX Group) Architecte technique de sites web à fort traffic Java EE / Spring, Spring Batch, Groovy, Grails Co-auteur de « Spring Batch in Action » Spring User Group France Julien Jakubowski, @jak78, OCTO Technology Architecte technique Spécialisé Java EE / Spring Productivité et qualité des développements Ch'ti JUG, Agile Tour Lille Copyright © BreizhJug
3.
De quoi va-t-on
parler ce soir ? • On va parler de batchs en Java • … et aussi de bière Copyright © BreizhJug http://www.flickr.com/photos/fromeyetopixel/2559391584/
4.
Nos objectifs
En 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 Copyright © BreizhJug
5.
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 d'expérience • Forces et faiblesses • Notions avancées • Questions / réponses Copyright © BreizhJug
6.
Batch : de
quoi parle-t-on ? Batch processing = suite de traitements sur ensemble de données… Copyright © BreizhJug
7.
Batch : de
quoi parle-t-on ? … potentiellement grands volumes… http://www.flickr.com/photos/claudiasofia99/2878579560/ Copyright © BreizhJug
8.
Batch : de
quoi parle-t-on ? … sans intervention d’un utilisateur humain – pas d’interface homme-machine Copyright © BreizhJug
9.
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 • … Copyright © BreizhJug
10.
Batch : de
quoi parle-t-on ? Un batch n’est pas un scheduler • Cron, Quartz, $U… • Mais un scheduler peut le lancer Copyright © BreizhJug
11.
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 Copyright © BreizhJug
12.
Problèmes récurrents
• Fiabilité Copyright © BreizhJug
13.
Problèmes récurrents
• Maintenabilité Copyright © BreizhJug
14.
Problèmes récurrents
• Réinvention de la roue… carrée Copyright © BreizhJug
15.
Quand j’écris une
application web… Copyright © BreizhJug
16.
Quand j’accède à
une base de données… Copyright © BreizhJug
17.
Et quand j’écris
un batch ? Je suis… à poil ? http://www.flickr.com/photos/crystaljingsr/3914729343/sizes/o/in/set-72157622354789320/ Copyright © BreizhJug
18.
Et quand j’écris
un batch ? Spring Batch offre pourtant une solution pour vous guider lors de l’écriture de vos batchs en Java Copyright © BreizhJug
19.
Spring Batch propose…
• Un cadre • Un vocabulaire (domainlanguage) • 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 Copyright © BreizhJug
20.
Spring Batch
Notions de base Copyright © BreizhJug
21.
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 Copyright © BreizhJug
22.
Schéma du batch
InitialStep InitialTasklet RecipeStep Chunkorientedtasklet ItemReader ItemProcessor ItemWriter Copyright © BreizhJug
23.
ItemReader
InitialStep InitialTasklet RecipeStep Chunkorientedtasklet ItemReader ItemProcessor ItemWriter Copyright © BreizhJug
24.
ItemReader
• Besoin – Lire le XML de recettes • ItemReader – Fournit des items en entrée <xml> SELECT ... FROM ... 123;AB; 456;CD; Copyright © BreizhJug
25.
Morceaux de code Copyright
© BreizhJug
26.
ItemProcessor
InitialStep InitialTasklet RecipeStep Chunkorientedtasklet ItemReader ItemProcessor ItemWriter Copyright © BreizhJug
27.
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 » Copyright © BreizhJug
28.
Morceaux de code Copyright
© BreizhJug
29.
Morceaux de code Copyright
© BreizhJug
30.
ItemWriter
InitialStep InitialTasklet RecipeStep Chunkorientedtasklet ItemReader ItemProcessor ItemWriter Copyright © BreizhJug
31.
ItemWriter
• Besoin – Décharge les bières dans une base SQL • ItemWriter – Ecrit les items <xml> INSERT... INTO ... 123;AB; 456;CD; Copyright © BreizhJug
32.
Morceaux de code Copyright
© BreizhJug
33.
Chunk
InitialStep InitialTasklet RecipeStep Chunkorientedtasklet ItemReader ItemProcessor ItemWriter Copyright © BreizhJug
34.
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 Copyright © BreizhJug
35.
Chunk Copyright © BreizhJug
36.
Traitement par lots Copyright
© BreizhJug
37.
Morceaux de code Copyright
© BreizhJug
38.
Listener
InitialStep InitialTasklet RecipeStep Chunkorientedtasklet ItemReader ItemProcessor ItemWriter Copyright © BreizhJug
39.
Listener
• Besoin – Création d’un fichier de rejet • Listener – Etre à l’écoute des évènements du batch Copyright © BreizhJug
40.
Morceaux de code Copyright
© BreizhJug
41.
Morceaux de code Copyright
© BreizhJug
42.
Morceaux de code Copyright
© BreizhJug
43.
Tasklet
InitialStep InitialTasklet RecipeStep Chunkorientedtasklet ItemReader ItemProcessor ItemWriter Copyright © BreizhJug
44.
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 Copyright © BreizhJug
45.
Morceaux de code Copyright
© BreizhJug
46.
Step
InitialStep InitialTasklet RecipeStep Chunkorientedtasklet ItemReader ItemProcessor ItemWriter Copyright © BreizhJug
47.
Step
• Besoin – Etape dans le processus du batch – Contrôle le workflow Copyright © BreizhJug
48.
Job
InitialStep InitialTasklet RecipeStep Chunkorientedtasklet ItemReader ItemProcessor ItemWriter Copyright © BreizhJug
49.
Job
• Besoin – Décrire les étapes du batch – Composé d’un ou plusieurs steps Copyright © BreizhJug Spring Tools Suite
50.
Morceaux de code Copyright
© BreizhJug
51.
Lancer un job
directement Copyright © BreizhJug
52.
Lancer un job
via un scheduler On utilise ici SpringScheduler. Il est indépendant de Spring Batch Copyright © BreizhJug
53.
Lancer un job
via un scheduler Copyright © BreizhJug
54.
Tests
• Tests unitaires facilités via le découpage Spring Batch – writers, processors etc... • Tests d'intégration facilités par Spring – @RunWith – Step, Job Copyright © BreizhJug
55.
Morceaux de code Copyright
© BreizhJug
56.
Morceaux de code Copyright
© BreizhJug
57.
Forces et faiblesses
✔Fiabilité et bons patterns ✔Tests unitaires et d'intégration, TDD ✔Batchs complexes mieux maintenables ✔Bénéficie de fonctions avancées à moindre coût ✔...the Springway, Spring Intégration ✔Productivité, à terme... ✗… après avoir payé le ticket d'entrée Copyright © BreizhJug
58.
Retour d’expérience
Ekino • Framework de batch – Moins de code produit, moins d'erreurs possibles – Plus de tests unitaires + intégrations • Mise en place par l'exemple – J'ai 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 Copyright © BreizhJug
59.
Retour d’expérience
Ekino • Nos batchs « Spring Batch » sont en SQL plutôt qu'en Hibernate • Spring Batch s'occupe 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 Copyright © BreizhJug
60.
Des questions,
avant la suite ? Copyright © BreizhJug http://www.flickr.com/photos/crystaljingsr/3914729343/in/set-72157622354789320/
61.
Spring Batch
Allons plus loin Copyright © BreizhJug
62.
Allons plus loin…
• Un cas un peu plus complexe – maître détail • La reprise sur erreurs • Un batch qui n’a pas un flow de bisounours… • Aperçu du parallélisme et du partitionnement Copyright © BreizhJug
63.
Maître détail
R;BurtonAle;AllGrain;Brad Smith H;Goldings, East Kent;UnitedKingdom H;NorthernBrewer;Germany H;Fuggles;UnitedKingdom END R;DryStout;AllGrain;Brad Smith H;Fuggles;UnitedKingdom END Copyright © BreizhJug
64.
Maître détail
RecipeStep Chunkorientedtasklet ItemReader ItemProcessor ItemWriter Copyright © BreizhJug
65.
Maître détail
Déclaration du Job Copyright © BreizhJug
66.
Maître détail
Déclaration du reader custom Copyright © BreizhJug
67.
R;BurtonAle;AllGrain;Brad Smith
H;Goldings, East Kent;UnitedKingdom H;NorthernBrewer;Germany H;Fuggles;UnitedKingdom END R;DryStout;AllGrain;Brad Smith H;Fuggles;UnitedKingdom END Copyright © BreizhJug
68.
Maître détail
Déclaration du reader délégué Copyright © BreizhJug
69.
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 Copyright © BreizhJug
70.
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 Copyright © BreizhJug
71.
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) Copyright © BreizhJug
72.
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 » Copyright © BreizhJug
73.
Reprise sur erreur:
Skip – Si FlatFileException, Spring Batch skip l’item – Skip de 10 items max – Au-delà la step « failed » – Include/Exclude possible Copyright © BreizhJug
74.
Reprise sur erreur:
Skip • Personnaliser la gestion du « skip » • Par défaut: LimitCheckingItemSkipPolicy Copyright © BreizhJug
75.
Reprise sur erreur:
Skip • Configuration de la gestion du « skip » Copyright © BreizhJug
76.
Reprise sur erreur:
Skip • Un listener permet de traiter les items écartés • Les annotations existent aussi – @OnSkipInRead – @OnSkipInWrite – @OnSkipInProcess Copyright © BreizhJug
77.
Reprise sur erreur:
Retry http://www.libertaland.com/2011/04/une-femme-de-75-ans-coupe-tout-linternet-en-armenie/ Copyright © BreizhJug
78.
Reprise sur erreur:
Retry • Permet de relancer une opération si indispo temporaire • Personnaliser les cas de « retry » • Ecouter les cas de « retry » Copyright © BreizhJug
79.
Reprise sur erreur:
Retry – Si DLDAE, Spring Batch recommence – Retry 3 fois max – Au-delà la step « failed » – Include/Exclude possible Copyright © BreizhJug
80.
Reprise sur erreur:
Retry • Personnaliser le « retry »: RetryPolicy – SimpleRetryPolicy (défaut) • Stratégie entre 2 « retry »: BackoffPolicy – NoBackOffPolicy (défaut) – ExponentialBackOffPolicy vraiment utile Copyright © BreizhJug
81.
Reprise sur erreur:
Retry • Configuration de la gestion du « retry » Copyright © BreizhJug
82.
Reprise sur erreur:
Retry • Un listener permet de traiter les « retry » Copyright © BreizhJug
83.
Reprise sur erreur:
Retry • Pour les tasklets – RetryTemplate – RetryOperationsInterceptor avec de l’AOP Copyright © BreizhJug
84.
Reprise sur erreur:
Restart • Même avec skip/retry, un batch peut planter • Il reste encore une solution • Nous pouvons redémarrer le batch Copyright © BreizhJug
85.
Reprise sur erreur:
Restart • Spring batch stocke des méta data Copyright © BreizhJug
86.
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 » Copyright © BreizhJug
87.
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. Copyright © BreizhJug
88.
Reprise sur erreur:
Restart • ItemStream Copyright © BreizhJug
89.
Reprise sur erreur:
Restart • Exemple de Reader « restartable » Copyright © BreizhJug
90.
Reprise sur erreur
Conclusion • Nous savons: – Ecarter des items défectueux (skip) – Recommencer un 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 Copyright © BreizhJug
91.
Gestion du flow
Le « batch bisounours » Step A Step B Copyright © BreizhJug
92.
Gestion du flow
Exemple Copyright © BreizhJug
93.
Gestion du flow
Exemple Copyright © BreizhJug
94.
Gestion du flow
• Le « batch complexe» Step Step Step Step Step Step Step Step Step Copyright © BreizhJug
95.
Gestion du flow
• Comment… – faire des flows non linéaires – piloter l’enchaînement des steps – passer des données entre steps Copyright © BreizhJug
96.
Gestion du flow
• Exemple plus simple ;) StepA FAILED StepAlert * StepB Copyright © BreizhJug
97.
Gestion du flow Copyright
© BreizhJug
98.
Gestion du flow
• Batch Status – Représente le status du job ou step • Exit Status – Représente le status du job ou step au final • Exemple – COMPLETED, STARTING, STARTED, STOPPING, STOPPED, FAILED,ABANDONED or UNKNOWN – C?T (CAT mais pas COUNT), C*T (CAT et COUNT) Copyright © BreizhJug
99.
Gestion du flow
• Créer et utiliser ses propres « exit status » – StepExecutionListener – JobDecider Copyright © BreizhJug
100.
Gestion du flow
• Utiliser ses propres « exit status » StepA COMPLETED WITH SKIPS StepC * StepB Copyright © BreizhJug
101.
Gestion du flow
• « exit status » + StepExecutionListener Copyright © BreizhJug
102.
Gestion du flow
• Configuration Copyright © BreizhJug
103.
Gestion du flow
• « exit status » + JobExecutionDecider Copyright © BreizhJug
104.
Gestion du flow
• Configuration Copyright © BreizhJug
105.
Gestion du flow
• Alors « StepExecutionListener » ou « JobExecutionDecider » ? – Le exit status du step est stocké comme meta data – Pas de « latebinding » avec le JobExecutionDecider Copyright © BreizhJug
106.
Gestion du flow
• Encore plus de contrôle: end, fail Copyright © BreizhJug
107.
Gestion du flow
• Partager des informations entre les steps – À la Spring:beanclassic – A la Spring Batch: « Executioncontext » • 1 pour le Job et 1 par Step • C’est une Map sauvegardé dans les meta data • Attention au volume • Latebindings – #{jobExecutionContext[‘myKey']} Copyright © BreizhJug
108.
Gestion du flow
• Accès à ExecutionContext Copyright © BreizhJug
109.
Gestion du flow
• Configuration Copyright © BreizhJug
110.
Gestion du flow
Step A • Mutualiser les flows Step B Mon Flow Step C Step D Copyright © BreizhJug
111.
Gestion du flow
• Configuration Copyright © BreizhJug
112.
Gestion du flow
• Réutiliser un Job Copyright © BreizhJug
113.
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 Copyright © BreizhJug
114.
Scaling
http://www.flickr.com/photos/claudiasofia99/2878579560/ Copyright © BreizhJug
115.
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) Copyright © BreizhJug
116.
Spring Batch in
Action http://www.manning.com/templier Copyright © BreizhJug
117.
Liens
• Spring User Group Paris – http://groups.google.fr/group/sugfr • Le code de la présentation – http://code.google.com/p/fr-sug-spring-batch • 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/ Copyright © BreizhJug
118.
Questions ? Copyright ©
BreizhJug
119.
ROTI
http://www.flickr.com/photos/34943981@N00/202923614/ Copyright © BreizhJug
Télécharger maintenant