web-dev-qa-db-fra.com

Avantages du lot de printemps

J'ai compris que le framework Spring Batch traite les données en morceaux. Cependant, je pensais que lorsque la même fonctionnalité de segmentation peut être obtenue via Java pourquoi devons-nous opter pour le framework batch).

Quelqu'un pourrait-il me faire savoir s'il y a d'autres raisons d'aller au framework Spring Batch?

27
pamperay

Permettez-moi de reformuler un peu votre question et de voir si cela y répond.

Que fournit Spring Batch que je devrais gérer moi-même lors de la création d'une application batch?

Spring Batch a servi de base à JSR-352 (la spécification Java batch) et depuis que cette spécification est sortie, il y a beaucoup de Spring Batch maintenant disponible dans le Java espace. Cela étant dit, il y a encore beaucoup de choses que Spring Batch fournit en dehors de la portée de ce que Java fait:

Dans un travail par lots "de base"

Dans le cadre d'un travail par lots simple, Spring Batch fournit une collection d'utilitaires et d'implémentations qui ont été testés au combat dans toutes les verticales d'entreprise. Quelques exemples sont:

  • Plus de 17 ItemReader et 15 ItemWriter implémentations couvrant de vastes options d'entrée et de sortie (File, JDBC, NoSQL, JMS, etc.). Tous ces éléments fournissent des options d'E/S déclaratives afin que vous n'ayez pas à écrire et tester du code pour les lecteurs et les écrivains avec état.
  • Une collection d'implémentations Tasklet (équivalent de Spring Batch aux Batchlet de JSR-352), y compris celles pour exécuter les commandes Shell et s'interfacer avec Hadoop.
  • La possibilité d'arrêter/démarrer/redémarrer les travaux et de maintenir l'état entre les exécutions.
  • La possibilité d'ignorer et de réessayer les enregistrements pendant leur traitement.
  • Gestion des transactions. Spring Batch gère les transactions pour vous.
  • La possibilité d'avertir les autres systèmes lorsque des erreurs se produisent via la messagerie en intégrant Spring Integration.
  • Configuration basée sur Java ou XML.
  • Toutes les fonctionnalités de Spring comme DI, AOP, testabilité, etc.
  • Indépendance vis-à-vis des fournisseurs - En utilisant Spring Batch, vous pouvez utiliser un framework open source et non lié à un seul fournisseur.

Avantages supplémentaires

Au-delà des exemples ci-dessus de ce que Spring Batch apporte à la table, il va beaucoup plus loin:

  • Options d'évolutivité - Spring Batch fournit un certain nombre d'options d'évolutivité qui vont de la même machine virtuelle Java via des threads (étape multithread, partitionnement local et fractionnements) à l'évolutivité multi-JVM (partitionnement à distance et segmentation à distance).
  • Intégration avec Spring Integration - Spring Integration fournit un certain nombre d'éléments utiles qui vous permettent de créer des applications batch robustes pour gérer des choses comme les messages d'erreur, les répertoires de poling pour les fichiers, automatiquement les fichiers FTP, etc.
  • Prise en charge du Big Data - Grâce au projet Spring pour Apache Hadoop, il existe un certain nombre d'extensions à Spring Batch qui lui permettent de bien fonctionner avec Hadoop. Vous pouvez exécuter des tâches Spring Batch sur YARN, vous pouvez exécuter des tâches Pig, Hive, MapReduce, etc.
  • Intégration avec Spring XD - Spring XD fournit un runtime distribué pour le déploiement, la gestion et l'exécution de travaux par lots.

Personnellement, je considère le traitement par lots comme le modèle de programmation "définissez-le et oubliez-le". Bien qu'il ne soit pas sexy, le traitement par lots est un modèle de traitement très utile et est plus utile à certains endroits que la plupart des gens ne le pensent. Spring Batch fournit un environnement qui permet de développer des travaux par lots robustes aussi facilement que possible.

61
Michael Minella