137
SUGF Spring Batch Avancé Mardi 20 Décembre 2011 Spring User Group France Olivier Bazoud Julien Jakubowski

Spring Batch Avance

Embed Size (px)

DESCRIPTION

Pour finir l'année en beauté, le Spring User Groupe FR vous propose de nous retrouver le Mardi 20 Décembre 2011 à 19h00 pour une session sur "Spring Batch Avancé". Lors de la première présentation (http://www.slideshare.net/sugfrance/spring-batch-concepts-de-base), nous avons vu les concepts de base de "Spring Batch". Lors de cette session nous vous proposons d'aborder les notions avancés de "Spring Batch" en tenant compte de vos suggestions (voir le Google Moderator http://www.google.com/moderator/#16/e=5f36). A la fin de la conférence, nous vous proposerons un quizz afin de gagner quelques exemplaires de "Spring Batch in Action" (A.Cogoluegnes, T. Templier, G. Gregory, O. Bazoud), offerts par la société Ekino (http://www.ekino.com / @3k1n0). Olivier Bazoud / @obazoud est architecte logiciel chez Ekino (http://www.ekino.com), spécialisé dans les technologies Java/JEE/Spring. Fort de 12 ans d’expérience, Olivier est en charge de l’architecture technique de sites et d'applications web à très fort traffic. Julien Jakubowski / @jak78 est architecte chez OCTO Technology. Il a 10 ans d'expérience acquise au sein de projets à fort engagement pour des grands comptes, dans des secteurs d'activités variés : banque, assurance, industrie, grande distribution... Julien accompagne ses clients sur des problématiques d'architecture, d'expertise technique, et de productivité des développements. Il est également co-fondateur et président du Ch'ti JUG (Java User Group de la région Lilloise), qui rassemble tous les mois plus de 100 passionnés de technologies Java.

Citation preview

Page 1: Spring Batch Avance

SUGF

Spring Batch AvancéMardi 20 Décembre 2011

Spring User Group France

Olivier Bazoud

Julien Jakubowski

Page 2: Spring Batch Avance

SUGF 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 France

Julien Jakubowski, @jak78, OCTO TechnologyISEN (le vrai, de Lille)

Architecte technique

Spécialisé Java EE / Spring

Ch'ti JUG, Agile Tour Lille

Page 3: Spring Batch Avance

SUGF De quoi va-t-on parler ce soir ?

• On va parler de batchs en Java

• … et aussi (un peu) de bière

http://www.flickr.com/photos/fromeyetopixel/2559391584/

• des techniques avancés

Page 4: Spring Batch Avance

SUGF Nos objectifs

En sortant de la salle, vous savez:

Identifier certains problèmes récurrents avec les batchs écrits en Java

Si Spring Batch est utile pour vous (ou pas)

Intégrer les notions principales

Intégrer les notions avancées

Faire un batch « Spring Batch » dès demain

Page 5: Spring Batch Avance

SUGF Ce qui vous attend• Rappel de l’épisode précédent

• Notions avancées – Vote

• Questions / Réponses

Page 6: Spring Batch Avance

SUGF

Concepts de baseRappel de l’épisode précédent (?)

Page 7: Spring Batch Avance

SUGF Batch : de quoi parle-t-on ?

Batch processing = répétition de traitements sur un ensemble de données…

Page 8: Spring Batch Avance

SUGF Batch : de quoi parle-t-on ?

… potentiellement grands volumes…

http://www.flickr.com/photos/claudiasofia99/2878579560/

Page 9: Spring Batch Avance

SUGF Batch : de quoi parle-t-on ?

… sans intervention d’un utilisateur humain – pas d’interface homme-machine

Page 10: Spring Batch Avance

SUGF 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

Page 11: Spring Batch Avance

SUGF Batch : de quoi parle-t-on ?

Un batch n’est pas un scheduler• Cron, inotify, Quartz, $U…• Mais un scheduler peut le lancer

Page 12: Spring Batch Avance

SUGF Problèmes récurrents• Fiabilité

Page 13: Spring Batch Avance

SUGF Problèmes récurrents• Maintenabilité

Page 14: Spring Batch Avance

SUGF Problèmes récurrents• Réinvention de la roue… carrée

Page 15: Spring Batch Avance

SUGF Quand j’écris un batch

http://www.flickr.com/photos/crystaljingsr/3914729343/sizes/o/in/set-72157622354789320/

Je suis… à poil, non ?

Page 16: Spring Batch Avance

SUGF Solution

Spring Batch offre pourtant une solution pour vous guider lors de l’écriture de vos batchs en Java

Page 17: Spring Batch Avance

SUGF

Spring Batch

Notions de base

Page 18: Spring Batch Avance

SUGF Exemple d’un batch

RecipeStep

InitialStep

InitialTasklet

Chunk oriented tasklet

ItemReader ItemWriterItemProcessor

Page 19: Spring Batch Avance

SUGF Tasklet

• Besoin– Effectuer une tâche unitaire

• Exemples– Unzip d’un fichier– Appel d’une procédure stockée– Appel d’un web service

Page 20: Spring Batch Avance

SUGF ItemReader• Besoin

– Lire le XML de recettes au format BeerXML

• ItemReader– Fournit des items en entrée

<xml>

123;AB;456;CD;

SELECT ... FROM ...

Page 21: Spring Batch Avance

SUGF 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 »

Page 22: Spring Batch Avance

SUGF ItemWriter• Besoin

– Décharge les bières dans une base SQL

• ItemWriter– Ecrit les items

<xml>

123;AB;456;CD;

INSERT... INTO ...

Page 23: Spring Batch Avance

SUGF Chunk

• Besoin– Lire, transformer et écrire

• Chunk1. Lire et transformer les données successivement

2. Ecrire le lot de données

– Le commit-interval définit la taille du lot– Gestion de la transaction : Commit/Rollback

Page 24: Spring Batch Avance

SUGF Chunk

Page 25: Spring Batch Avance

SUGF Job

• Besoin– Décrire les étapes du batch– Composé d’un ou plusieurs Steps

Spring Tools Suite

Page 26: Spring Batch Avance

SUGF Exemple d’un batch

RecipeStep

InitialStep

InitialTasklet

Chunk oriented tasklet

ItemReader ItemWriterItemProcessor

Page 27: Spring Batch Avance

SUGF 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

Page 28: Spring Batch Avance

SUGF Forces et faiblesses

✔Fiabilité et bons patterns✔Tests unitaires et d'intégration, TDD✔ ...the Spring way, intégration à Spring✔Batchs complexes mieux maintenables✔Bénéficie de fonctions avancées à moindre coût✔Productivité, à terme...✗… après avoir payé le ticket d'entrée

Page 29: Spring Batch Avance

SUGFDes questions,avant la suite ?

http://www.flickr.com/photos/crystaljingsr/3914729343/in/set-72157622354789320/

Page 30: Spring Batch Avance

SUGF

Spring BatchAllons plus loin

Page 31: Spring Batch Avance

SUGF Maître détailRecipe

HopHopHop

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

Page 32: Spring Batch Avance

SUGF Un batch plus robuste reprise sur erreurs

Page 33: Spring Batch Avance

SUGF Flow

Step A

Step B

Page 34: Spring Batch Avance

SUGF Spring Batch Admin

Page 35: Spring Batch Avance

SUGF Scaling et parallélisme

http://www.flickr.com/photos/claudiasofia99/2878579560/

Page 36: Spring Batch Avance

SUGF Spring Batch et Hibernate

Page 37: Spring Batch Avance

SUGF Allons plus loin…

• Un cas un peu plus complexe– maître / détail

• La reprise sur erreurs• Un flow qui n’est pas de bisounours…• Spring Batch Admin (et Monitoring)• Scaling et parallélisme• Spring Batch et Hibernate

Page 38: Spring Batch Avance

SUGF Maître détailRecipe

HopHopHop

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…

Page 39: Spring Batch Avance

SUGFMaître détail

Déclaration du reader custom

Page 40: Spring Batch Avance

SUGF

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

Page 41: Spring Batch Avance

SUGFMaître détail

Déclaration du reader délégué

Page 42: Spring Batch Avance

SUGF 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

ou• Spring Batch pense à vous

– PatternMatchingCompositeLineTokenizer

Page 43: Spring Batch Avance

SUGF Un batch plus robuste

Page 44: Spring Batch Avance

SUGF 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

Page 45: Spring Batch Avance

SUGF 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)

Page 46: Spring Batch Avance

SUGF Reprise sur erreur

Page 47: Spring Batch Avance

SUGF Reprise sur erreur: Skip

• Ne pas arrêter le batch si la lecture/process/écriture échoue

• Personnaliser les cas de « skip »• Ecouter les cas de « skip »

0001;ABC;DEF;0002;ABC;DEF;000zxjgxdjghjsdfkud0004;ABC;DEF;

Page 48: Spring Batch Avance

SUGF Reprise sur erreur: Skip

– Si FlatFileException, Spring Batch skip l’item– Skip de 10 items max– Au-delà la step « failed »– Include/Exclude possible

Page 49: Spring Batch Avance

SUGF Reprise sur erreur: Skip

• Personnaliser la gestion du « skip »• Par défaut: LimitCheckingItemSkipPolicy

Page 50: Spring Batch Avance

SUGF Reprise sur erreur: Skip

• Configuration de la gestion du « skip »

Page 51: Spring Batch Avance

SUGF Reprise sur erreur: Skip

• Un listener permet de traiter les items écartés

• Les annotations existent aussi– @OnSkipInRead– @OnSkipInWrite– @OnSkipInProcess

Page 52: Spring Batch Avance

SUGF Reprise sur erreur: Retry

Page 53: Spring Batch Avance

SUGF Reprise sur erreur: Retry

• Permet de relancer une opération si indispo temporaire

• Personnaliser les cas de « retry »• Ecouter les cas de « retry »

Page 54: Spring Batch Avance

SUGF Reprise sur erreur: Retry

– Si DLDAE, Spring Batch recommence– Retry 3 fois max– Au-delà la step « failed »– Includes/Excludes possible

Page 55: Spring Batch Avance

SUGF Reprise sur erreur: Retry

• Personnaliser le « retry »: RetryPolicy– SimpleRetryPolicy (défaut)

• Stratégie entre 2 « retry »: BackoffPolicy– NoBackOffPolicy (défaut)– ExponentialBackOffPolicy vraiment utile

Page 56: Spring Batch Avance

SUGF Reprise sur erreur: Retry

• Configuration de la gestion du « retry »

Page 57: Spring Batch Avance

SUGF Reprise sur erreur: Retry

• Un listener permet de traiter les « retry »

Page 58: Spring Batch Avance

SUGF Reprise sur erreur: Retry

• Pour les tasklets– RetryTemplate– RetryOperationsInterceptor avec de l’AOP

Page 59: Spring Batch Avance

SUGF Reprise sur erreur: Restart

Page 60: Spring Batch Avance

SUGF Reprise sur erreur: Restart

• Même avec skip/retry, un batch peut planter

• Il reste encore une solution • Nous pouvons redémarrer le batch

Page 61: Spring Batch Avance

SUGF Reprise sur erreur: Restart

• Indique si le job est « restartable »

• Indique le nombre max de « restart »

Page 62: Spring Batch Avance

SUGF Reprise sur erreur: Restart

• La step est démarrée lors du restart même si elle a été terminée correctement

Page 63: Spring Batch Avance

SUGF Reprise sur erreur: Restart

• Comment reprendre en plein milieu d’un chunk ?

• Comment Spring Batch sait il où reprend ?

Page 64: Spring Batch Avance

SUGF Reprise sur erreur: Restart

• Spring batch stocke des méta data

Page 65: Spring Batch Avance

SUGF 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 »

Page 66: Spring Batch Avance

SUGF 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.

Page 67: Spring Batch Avance

SUGF Reprise sur erreur: Restart

• ItemStream

Page 68: Spring Batch Avance

SUGF Reprise sur erreur: Restart• Exemple de Reader « restartable »

Page 69: Spring Batch Avance

SUGF Reprise sur erreurConclusion

• 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

Page 70: Spring Batch Avance

SUGF Gestion du flow

Page 71: Spring Batch Avance

SUGF Gestion du flow

Le « batch bisounours »

Step A

Step B

Page 72: Spring Batch Avance

SUGF Gestion du flow

Exemple

Page 73: Spring Batch Avance

SUGF Gestion du flow

Exemple

Page 74: Spring Batch Avance

SUGF Gestion du flow• Le « batch complexe»

Step

Step

Step

Step

Step

Step

Step

Step

Step

Page 75: Spring Batch Avance

SUGF Gestion du flow

• Comment…– faire des flows non linéaires– piloter l’enchaînement des steps– passer des données entre steps

Page 76: Spring Batch Avance

SUGF Gestion du flow

• Exemple plus simple ;)

StepA

StepB

StepAlertFAILED

*

Page 77: Spring Batch Avance

SUGF Gestion du flow

Page 78: Spring Batch Avance

SUGF 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)

Page 79: Spring Batch Avance

SUGF Gestion du flow

• Créer et utiliser ses propres « exit status » – StepExecutionListener– JobDecider

Page 80: Spring Batch Avance

SUGF Gestion du flow

• Utiliser ses propres « exit status »

StepA

StepB

StepC

COMPLETED WITH SKIPS

*

Page 81: Spring Batch Avance

SUGF Gestion du flow

• « exit status » + StepExecutionListener

Page 82: Spring Batch Avance

SUGF Gestion du flow• Configuration

Page 83: Spring Batch Avance

SUGF Gestion du flow

• « exit status » + JobExecutionDecider

Page 84: Spring Batch Avance

SUGF Gestion du flow• Configuration

Page 85: Spring Batch Avance

SUGF Gestion du flow

• « StepExecutionListener » ou « JobExecutionDecider » ?

• JobExecutionDecider pour réutiliser plus facilement la logique de branchement

Page 86: Spring Batch Avance

SUGF Gestion du flow

• Encore plus de contrôle: end, fail

Page 87: Spring Batch Avance

SUGF 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']}

Page 88: Spring Batch Avance

SUGF Gestion du flow

• Accès à ExecutionContext

Page 89: Spring Batch Avance

SUGF Gestion du flow

• Configuration

Page 90: Spring Batch Avance

SUGF Gestion du flow

• Mutualiser les flowsStep A

Step B

Step C

Step D

MonFlow

Page 91: Spring Batch Avance

SUGF Gestion du flow• Configuration

Page 92: Spring Batch Avance

SUGF Gestion du flow• Réutiliser un Job

Page 93: Spring Batch Avance

SUGF 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

Page 94: Spring Batch Avance

SUGF 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

Page 95: Spring Batch Avance

SUGF Spring Batch Admin

• API REST

Page 96: Spring Batch Avance

SUGF 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 …

Page 97: Spring Batch Avance

SUGF Spring Batch Admin

• Les jobs

Page 98: Spring Batch Avance

SUGF Spring Batch Admin

• Lancement / Historique d’un job

Page 99: Spring Batch Avance

SUGF Spring Batch Admin

• Lancer un job

Page 100: Spring Batch Avance

SUGF Spring Batch Admin

• Détail d’un job execution

Page 101: Spring Batch Avance

SUGF

Spring Batch Admin• Détail d’éxécution

Page 102: Spring Batch Avance

SUGF 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

Page 103: Spring Batch Avance

SUGF Spring Batch Admin / Monitoring

Page 104: Spring Batch Avance

SUGF Spring Batch Admin / Monitoring

Page 105: Spring Batch Avance

SUGF Spring Batch Admin

• Conclusion, nous avons aborder– Les principaux écrans de « Spring Batch

Admin »– L’API Rest– Le monitoring par JMX

Page 106: Spring Batch Avance

SUGF Scaling

http://www.flickr.com/photos/claudiasofia99/2878579560/

Page 107: Spring Batch Avance

SUGF Scaling

Page 108: Spring Batch Avance

SUGF 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)

Page 109: Spring Batch Avance

SUGF 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

Page 110: Spring Batch Avance

SUGF 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’

Page 111: Spring Batch Avance

SUGF Scaling: Multi-threaded Step

Page 112: Spring Batch Avance

SUGF Scaling: Step en parallèle

• Executer plusieurs Step en parallèle• Mot clé « split » dans la configuration• Possibilité utiliser un

ThreadPoolTaskExecutor

Page 113: Spring Batch Avance

SUGF Scaling: Step en parallèle

Page 114: Spring Batch Avance

SUGF Scaling: Remote Chunking

• Répartition de la charge vers des slaves– Lecture sur le Master– Processor et Writer sur les slaves

• Spring Batch propose des interfaces/classes

• Spring Integration propose une implementation

• La relation master/slave : MOM– ActiveMQ, RabbitMQ, …

Page 115: Spring Batch Avance

SUGF Scaling: Remote Chunking Master

Slave 1

ChunkProcessor

Writer

ChunkProcessor

Reader

ChunkProvider

Slave 2

ChunkProcessor

Writer

Slave N

ChunkProcessor

Writer

Page 116: Spring Batch Avance

SUGF Scaling: Remote Chunking

• Démo ?!

Page 117: Spring Batch Avance

SUGF 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

Page 118: Spring Batch Avance

SUGF Scaling: Partitioning

Page 119: Spring Batch Avance

SUGF Scaling

• Conclusion, nous avons aborder– Les stratégies possibles– La démo «  Remote Chunking of Step »

Page 120: Spring Batch Avance

SUGF Spring Batch et Hibernate

Page 121: Spring Batch Avance

SUGF Spring Batch et Hibernate

• Les raisons– code existant– rapidité de développement (les premiers 80%)

• Ca ne se fait pas sans dangers…

Page 122: Spring Batch Avance

SUGF Spring Batch et Hibernate

• Votre mapping Hibernate est il fait pour du batch ?– Ai-je besoin de tous les fetchs ?!– Select N+1 ?!

• Overhead de Hibernate sur JDBC

Page 123: Spring Batch Avance

SUGF Spring Batch et Hibernate

• Hibernate est stateful (par défaut)– 1M d’items lus = 1M en RAM OutOfMemoryError

• Utiliser HibernateCursorItemReader– 1 requête HQL– Session stateless

Page 124: Spring Batch Avance

SUGF 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

Page 125: Spring Batch Avance

SUGF Spring Batch et Hibernate

• Principe– L’ItemReader lit les « id » 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

– …

Page 126: Spring Batch Avance

SUGF Questions ?

http://www.flickr.com/photos/crystaljingsr/3914729343/in/set-72157622354789320/

Page 127: Spring Batch Avance

SUGF Quizz

Page 128: Spring Batch Avance

SUGF Spring Batch in Action

http://www.manning.com/templier

Page 129: Spring Batch Avance

SUGF 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

Page 130: Spring Batch Avance

SUGF Quizz 1

Ce que n'est pas Spring Batch ?

1. un framework orienté batchs

2. un scheduler

3. un framework open source

Page 131: Spring Batch Avance

SUGF Quizz 2

Qui est le principal leader du projet Spring Batch ?

1. Antonio Goncalves

2. Obi-wan Kenobi

3. Dave Syer

Page 132: Spring Batch Avance

SUGF Quizz 3

Comment s'appelle la console d’admin de Spring Batch ?

1. Coldfusion Web Console

2. Spring Batch Admin

3. PlayScalaInCloud

Page 133: Spring Batch Avance

SUGF Quizz 4

Quel est l’objet qui n’existe pas en « Spring Batch » ?

1. ItemReader

2. ItemWriter

3. ItemBien

Page 134: Spring Batch Avance

SUGF Quizz 5

Qui vous offre un exemplaire de « Spring Batch in Action »?

1. Sais pas, je viens de me réveiller

2. Ekino

3. Le père Noël

Page 135: Spring Batch Avance

SUGF 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/

Page 136: Spring Batch Avance

SUGF ROTI

http://www.flickr.com/photos/34943981@N00/202923614/

Page 137: Spring Batch Avance

SUGF Session « Spring Batch Avancé»

• Ekino– http://www.ekino.com / @3k1n0– Olivier Bazoud / @obazoud

• Octo Technology– http://www.octo.com / @ OCTOTechnology– Julien Jakubowski / @jak78