Spring Batch ou le Batch avec la classe !                           Jean-Philippe Briend                      jean-philipp...
Papa, c’est quoi un Batch ?    Wikipedia : http://en.wikipedia.org/wiki/Batch_processing•   Batch jobs are set up so they ...
Les batchs en Java : Aujourd’hui•   C’est vieux !•   C’est moche !•   C’est multi-techno !•   C’est mal écrit !           ...
Les batchs en Java : Demain•   Organiser !•   Unifier !•   Simplifier !•   Se concentrer sur le métier !                  On...
Spring, pourquoi c’est sympa ?•   La tuyauterie par configuration XML•   On commence à être à l’aise dessus (sinon    chang...
I had a dream ...•   Imaginez qu’un Batch soit des petites cases bien    agencées ...•   Imaginez qu’on puisse agencer ces...
Here comes the Sun ... Spring Batch
Spring Batch n’est pas ...•   un ordonnanceur : non non non non, Spring    Batch ne planifie pas de batchs !•   une nouvell...
Spring Batch ...•   va vous obliger à vous décrasser les neurones•   va vous faire passer pour un mec carré qui fait des  ...
Compose ton framework ...    Composons notre framework à la carte :•   petites boites pour représenter des traitements mét...
Step•   Définition : “A Step is a domain object that encapsulates    an independent, sequential phase of a batch job”•   Se...
Job•   Définition : “A Job is an entity that encapsulates an entire    batch process.”•   Se compose d’un ensemble de Steps...
Step : Tasklet•   Step la plus simple : Interface avec une seule méthode    execute•   Appelée de façon répétitive jusqu’à...
Step : Chunk<job id="sampleJob" job-repository="jobRepository">    <step id="step1">        <tasklet transaction-manager="...
Flow       Split
RésuméJob : ensemble cohérent de traitements de données   Un Job est composé de StepsStep : traitement unitaire de données...
ItemReader•   Rôle : lire des données quelquepart    •   Fichier    •   XML    •   Base de Données•   Retourne un Item ou ...
ItemWriter•   Identique à l’ItemReader mais avec l’opération inverse    •   Fichier    •   XML    •   Base de Données•   P...
ItemProcessor•   Très simple : prends un objet en entrée et en retourne    un autre en sortie•   Sert à implémenter la log...
MultiThreading•   Multi-threaded Step•   Parallel Steps•   Remote Chunking•   Partitioning Step
Multi-threaded Step•   Utilisation des TaskExecutors de Spring           <step id="loading">               <tasklet task-e...
Parallel Steps•   Utilisation des TaskExecutors de Spring•   Utilisation du flow Split         <job id="job1">             ...
Remote Chunking
Partitioning Step
Demo
Spring Batch 17-05-2011
Prochain SlideShare
Chargement dans…5
×

Spring Batch 17-05-2011

2 040 vues

Publié le

Vous ne vous y retrouver pas dans la nébuleuse Spring ?

Vous avez entendu parler de Spring Batch (ou pas d’ailleurs), vous aimeriez que l’on vous explique comment on s’en sert ?

Vous voulez en savoir plus sur ce framework ?

Alors venez au prochain NormandyJUG !



Jean-Philippe Briend est Architecte chez Infin-IT, société de service de petite taille spécialisée en Nouvelles Technologies et Finance / Assurance.
Il est intervenu chez de grands comptes (grande distribution, finance, assurance, éditeurs, etc…) sur des projets Java / J2ee stratégiques.
En 2010, il est intervenu comme Architecte pour la refonte de batchs orientée Performance chez un grand éditeur français.
Il nous présentera Spring Batch et son retour d’expérience de ce projet.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
2 040
Sur SlideShare
0
Issues des intégrations
0
Intégrations
48
Actions
Partages
0
Téléchargements
82
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Spring Batch 17-05-2011

    1. 1. Spring Batch ou le Batch avec la classe ! Jean-Philippe Briend jean-philippe.briend@infin-it.fr twitter.com/jpbriend
    2. 2. Papa, c’est quoi un Batch ? Wikipedia : http://en.wikipedia.org/wiki/Batch_processing• Batch jobs are set up so they can be run to completion without manual intervention, so all input data is preselected through scripts or command-line parameters. This is in contrast to "online" or interactive programs which prompt the user for such input. A program takes a set of data files as input, processes the data, and produces a set of output data files. This operating environment is termed as "batch processing" because the input data are collected into batches of files and are processed in batches by the program.
    3. 3. Les batchs en Java : Aujourd’hui• C’est vieux !• C’est moche !• C’est multi-techno !• C’est mal écrit ! On aime pas ça !
    4. 4. Les batchs en Java : Demain• Organiser !• Unifier !• Simplifier !• Se concentrer sur le métier ! On aime ça !
    5. 5. Spring, pourquoi c’est sympa ?• La tuyauterie par configuration XML• On commence à être à l’aise dessus (sinon changez d’employeur !)
    6. 6. I had a dream ...• Imaginez qu’un Batch soit des petites cases bien agencées ...• Imaginez qu’on puisse agencer ces cases par de la configuration XML ...• Imaginez qu’on puisse facilement configurer son Batch ...
    7. 7. Here comes the Sun ... Spring Batch
    8. 8. Spring Batch n’est pas ...• un ordonnanceur : non non non non, Spring Batch ne planifie pas de batchs !• une nouvelle techno : on ne remplace pas du PL/ SQL s’il ne le faut pas. On reste pragmatique !• un truc brainless !
    9. 9. Spring Batch ...• va vous obliger à vous décrasser les neurones• va vous faire passer pour un mec carré qui fait des choses performantes (selon la capacité intellectuelle de chacun, hein !)• va vous faire réutiliser (on n’y croyait plus)• va vous faire aller voir les MOAs (oui oui oui)• va vous faire dessiner (et ouais !)
    10. 10. Compose ton framework ... Composons notre framework à la carte :• petites boites pour représenter des traitements métiers différents• agencer ces traitements via un diagramme d’activité• Springifier le tout
    11. 11. Step• Définition : “A Step is a domain object that encapsulates an independent, sequential phase of a batch job”• Se compose de : ItemReader Step ItemProcessor ItemWriter
    12. 12. Job• Définition : “A Job is an entity that encapsulates an entire batch process.”• Se compose d’un ensemble de Steps agencées en un diagramme d’activité
    13. 13. Step : Tasklet• Step la plus simple : Interface avec une seule méthode execute• Appelée de façon répétitive jusqu’à ce qu’elle renvoit RepeatStatus.FINISHED ou une Exception• Transaction unique <step id="step1"> <tasklet ref="myTasklet"/> </step>
    14. 14. Step : Chunk<job id="sampleJob" job-repository="jobRepository"> <step id="step1"> <tasklet transaction-manager="transactionManager"> <chunk reader="itemReader" writer="itemWriter" commit-interval="10"/> <tasklet> </step></job>
    15. 15. Flow Split
    16. 16. RésuméJob : ensemble cohérent de traitements de données Un Job est composé de StepsStep : traitement unitaire de données Une Step est composée de : un Reader un ou plusieurs Processors un Writer
    17. 17. ItemReader• Rôle : lire des données quelquepart • Fichier • XML • Base de Données• Retourne un Item ou null s’il n’y en a plus• Plein de Readers existant public interface ItemReader<T> { T read() throws Exception, UnexpectedInputException, ParseException; }
    18. 18. ItemWriter• Identique à l’ItemReader mais avec l’opération inverse • Fichier • XML • Base de Données• Plein de Writers existant public interface ItemWriter<T> { void write(List<? extends T> items) throws Exception; }
    19. 19. ItemProcessor• Très simple : prends un objet en entrée et en retourne un autre en sortie• Sert à implémenter la logique métier• Chainable public interface ItemProcessor<I, O> { O process(I item) throws Exception; }
    20. 20. MultiThreading• Multi-threaded Step• Parallel Steps• Remote Chunking• Partitioning Step
    21. 21. Multi-threaded Step• Utilisation des TaskExecutors de Spring <step id="loading"> <tasklet task-executor="taskExecutor">...</tasklet> </step>
    22. 22. Parallel Steps• Utilisation des TaskExecutors de Spring• Utilisation du flow Split <job id="job1"> <split id="split1" task-executor="taskExecutor" next="step4"> <flow> <step id="step1" next="step2" /> <step id="step2" /> </flow> <flow> <step id="step3" /> </flow> </split> <step id="step4" /> </job> <beans:bean id="taskExecutor" class="org.spr...SimpleAsyncTaskExecutor"/>
    23. 23. Remote Chunking
    24. 24. Partitioning Step
    25. 25. Demo

    ×