IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

Cadencer une exécution Spring-Batch


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet, concepteur
    Inscrit en
    Mai 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet, concepteur

    Informations forums :
    Inscription : Mai 2003
    Messages : 50
    Par défaut Cadencer une exécution Spring-Batch
    Bonjour à tous,

    J'ai une question assez simple, la réponse l'est peut être un peu moins .

    Quel est le meilleur moyen de cadencer les traitements d'un batch écrit en Spring - Batch, en lui demandant de traiter au maximum X éléments par secondes ?

    Sur un projet, nous avons un batch qui doit effectuer un lissage de charge sur la durée afin d'éviter de surcharger certains éléments d’infrastructure et services. Pour cela est-il possible de mettre en place un système de débit au sein de Spring-Batch.


    Merci,

  2. #2
    Membre confirmé Avatar de Lordsephiroth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 199
    Par défaut
    La question est effectivement très simple.
    Je n'ai jamais entendu quelqu'un souhaiter ralentir l'exécution de Spring Batch
    Plus sérieusement, je n'ai pas connaissance d'un mécanisme permettant de demander à Spring Batch de se cadencer à une vitesse précise. Si elle existe, je serais ravi d'en apprendre l'existence. Une recherche Google ne m'a pas donné de résultat probant.

    Comme ça, moi je réglerais la chose en implémentant un ItemWriter qui serait chargé non pas d'écrire quelque chose mais de "ralentir" l'écriture réelle. Cet ItemWriter serait appelé comme premier "delegateWriter" d'un "CompositeItemWriter". Cet ItemWriter ferait appel à une bonne vieille directive "wait" pour suspendre le thread durant un intervalle pré-défini.

    Ce qui permettrait de définir facilement un traitement en chunks par minutes (imaginons le chunk est traité en 500ms, on veut lisser à 6 chunks par minute, donc 9500 ms de wait devrait faire l'affaire). Le framework Spring Batch a peut être déjà un mécanisme permettant de le faire.

    Si vous sous-entendez par "lissage" de répartir le traitement sur une durée prédéfinie (par exemple lisser un nombre variable d'éléments sur 4h de traitement), là c'est un poil plus difficile, mais probablement faisable (sur DB par exemple une requête COUNT pour calculer un nombre de chunks par minutes nécessaire pour traiter en 4h, puis calculer l'intervalle d'attente). Spring Batch ne propose assurément pas ce mécanisme, le framework ne peut "deviner" le nombre d'éléments à traiter.

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/08/2015, 18h04
  2. [Batch] Rechercher une chaine de caractères et exécuter une commande en batch
    Par windu2014 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 30/06/2015, 08h51
  3. Réponses: 6
    Dernier message: 28/11/2013, 11h55
  4. Exécuter un batch dans une application
    Par Ashura75013 dans le forum Langage
    Réponses: 2
    Dernier message: 22/09/2008, 17h06
  5. [Système] Exécuter fichier batch
    Par gogolak dans le forum Langage
    Réponses: 6
    Dernier message: 10/05/2006, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo