Le Touilleur ExpressLe Touilleur ExpressLe Touilleur ExpressLe Touilleur Express
  • Accueil
  • A propos de l’auteur
  • A propos du Touilleur Express

Introduction à Spring Integration

    Home Java Introduction à Spring Integration

    Introduction à Spring Integration

    Par Nicolas Martignole | Java | 3 commentaires | 19 février, 2009 | 0 | 7 603 affichages
         

    Spring Integration est la solution d’intégration proposée par la communauté Spring. Cousin très proche de Mule, Spring Integration vous permet de réduire le code d’infrastructure technique de votre application. En quelques lignes vous pouvez ainsi lire un fichier sur le disque, vérifier chaque ligne puis ensuite enregistrer vers une base les données chargées.

    La version 1.0 a été annoncé en décembre dernier, Mark Fisher propose de vous montrer en 10 minutes comment écrire un service simple et faire fonctionner Spring Integration : http://blog.springsource.com/2009/02/13/982/.

    Dans son post dont j’ai repris le code ci-dessous, nous déclarons un bean Spring et nous allons montrer comment envoyer un message via Spring Integration.

    La configuration Spring importe le namespace de Spring Integration et permet de déclarer le bean Shouter :
     

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:si="http://www.springframework.org/schema/integration"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/integration
    http://www.springframework.org/schema/integration/spring-integration-1.0.xsd">
    
    <si:channel id="input"/>
    
    <si:channel id="output">
    <si:queue capacity="10"/>
    </si:channel>
    
    <si:service-activator input-channel="input" output-channel="output" ref="shouter" method="shout"/>
    
    <bean id="shouter" class="blog.Shouter"/>
    
    </beans>
    
    

    Voyons le bean Java qui va recevoir notre message et y ajouter des points d’exclamation:

    public class Shouter {
        public String shout(String s) {
            return s.toUpperCase().concat("!!!");
        }
    }

    Le code Java pour tester le tout est simple :

    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("blog/config.xml");
        MessageChannel input = (MessageChannel) context.getBean("input");
        PollableChannel output = (PollableChannel) context.getBean("output");
    
        input.send(new StringMessage("Le Touilleur Express"));
        Message< ?> reply = output.receive();
    
        System.out.println("received: " + reply);
    }

    A quoi sert Spring Integration ?
    Spring Integration permet de réduire le code technique de votre application. Vous lisez un message sur une queue JMS, vous voulez envoyer un email, vous souhaitez lire un fichier et le convertir vers un autre format, faire un traitement par batch, télécharger via FTP un fichier ou SSH, alors Spring Integration pourra vous intéresser.

    Peut-on comparer Spring Integration à Mule ?
    Pour qui connaît un peu Mule 2, la ressemblance est frappante. Ross Mason, l’auteur de Mule, a tenté un moment de se rapprocher de la communauté Spring, mais celle-ci a préféré offrir une solution basée exclusivement sur Spring. Il n’y a pas de comparaison possible au sens « l’un est mieux que l’autre ». Mule a cependant un peu plus de recul, dispose de beaucoup plus de connecteurs que Spring Integration pour l’instant. Sa communauté est assez active. Si vous souhaitez utiliser par exemple Tibco Rendezvous ou faire du SSH, il faudra utiliser Mule.
    Je pense qu’il est intéressant de connaître les deux projets et de ne pas s’aventurer à faire un choix, s’il faut en faire un.

    Est-ce que Spring Integration est un ESB ?
    Non, je dirai que c’est un framework léger d’intégration comme Apache Camel, mais pas un ESB. Le produit OpenESB basé sur le serveur d’application Glassfish est un ESB, car il est composé d’une API d’une part et d’un moteur d’autre part. Mule est un ESB léger, il propose son propre moteur ou il peut fonctionner dans une application Web. Spring Integration est par contre une brique peut-être plus facile à mettre en oeuvre si vos besoins sont avant tout techniques.

    Pour aller plus loin
    Le site de la communauté muleForge : http://www.muleforge.org/
    Le site de Mule 2 : http://www.mulesource.org
    Article de Cyrille Le Clerc sur le blog de Xebia en 2007
    Article de Sébastien Letélié d’Improve sur les ESB : Java Camp II DB and ESB

    Articles similaires:

    Default ThumbnailExemple Mule : lire un fichier CSV et écrire vers une base de données Default ThumbnailEvénement Spring le 13 novembre 2008 Default ThumbnailSpring : keep-it under control Default ThumbnailEvénement Spring à Paris le mercredi 4 novembre 2009
    esb, mule, spring
    • Avatar
      Christophe heubès 20 février 2009 at 8 h 14 min

      En complément du billet de Cyrille, une entrée un peu plus récent sur le blog de Xebia :
      http://blog.xebia.fr/2008/07/30/introduction-a-spring-integration/.

    • Avatar
      Nicolas FRANCOIS 20 février 2009 at 11 h 07 min

      Tiens, j’avais moi aussi vu cet article et regardé un peu.
      Après avoir essayé l’exemple de l’article de Mark Fisher, j’ai voulu essayer quelque chose de plus poussé. J’ai pensé à ton poc mule qui prend du csv dans un répertoire est insère dans une table.
      Rapidement quelque constatations :
      – Ah bah pas de connecteur jdbc ou j’ai pas trouvé ? Si c’est vraiment pas là, c’est assez dommage bien que ça devrait se bricoler maison.
      – Les transformers ne déroutent un peu : on les place entre 2 channels. Ce qui ne me semble pas vraiment faire de grosse différence avec un service-activator et de plus, ça me donne l’impression d’utiliser des channels pour « pas grand chose ». Sur ce point, je trouve l’approche Mule plus intéressante.
      je n’ai encore regardé ce qu’il en est du coté des Filter, Router et les autres possibilités qu’offre spring integration.

      Malgré tout ça, je trouve ça assez sympa à utiliser pour de petites applications où les traitement restent assez simples.

    • Avatar
      greg_le_bonniec 20 février 2009 at 14 h 04 min

      La définition d’un ESB est complexe (voir mon billet sur le sujet : http://java-soa.blogspot.com/2009/02/les-esb-sont-distribues-par-definition.html). De mon point de vue, l’ensemble des produits dits ESB (OpenESB , Mule, ServiceMix….) ou encore les frameworks comme Spring Integration ou Camel sont très proches dans leur philosophie et permettent de mettre en place une véritable solution d’intégration distribuée qui est l’essence même des ESB.

      Je ne suis pas totalement d’accord avec toi quand tu dis qu’OpenESB est le seul véritable ESB. Un ESB pour moi doit être avant tout léger, ce qui n’est pas le cas d’OpenESB qui est aujourd’hui un très bon moteur BPEL avant d’être un conteneur de services facilement déployable . L’un des avantages d’OpenESB est sa grande collection de composants mais il me semble trop lourd (en attente de la release Fuji qui me semble sur la bonne voie) comparé à ServiceMix ou Mule.

      Greg

      PS : je profite de mon premier commentaire pour te remercier pour l’ensemble de ton oeuvre 😉 le contenu de tes posts est toujours très intéressant, utile et enrichissant…

    Recent Posts

    • GitHub Actions : le tueur de Jenkins ?

      Avouez-le : ce titre de blog est super racoleur. J’avais aussi pensé

      15 février, 2021
    • Comment recréer du lien social dans l’Entreprise avec des outils numériques en 2021

      Nous sommes en février 2021 pendant le 3ème confinement lié à la

      10 février, 2021
    • FizzBuzz en Java et Scala (surtout Scala)

      L’exercice FizzBuzz est un petit exercice très simple, à tester par exemple

      9 février, 2021

    Recent Tweets

    • RT  @QuarkusIO : We just released Quarkus https://t.co/ZkyLrP5cFs. The big change is the Fast jar packaging as default (better read the annou…

      9 hours ago
    •  @starbuxman  Très bonne idée 👍🏻

      10 hours ago
    •  @jylls35  Merci je ne savais pas 😀

      1 day ago
    • RT  @benzonico :  @nmartignole  Dans la même veine de dictons : "Il n'y a pas de bons montagnards, il y a des vieux montagnards..."

      1 day ago
    • «... un pilote vieux c’est un pilote chanceux et prudent... » (fin du tweet précédent)

      1 day ago

    Mots clés

    agile (18) ajax (11) Apple (11) architecture (6) barcamp (5) BarCampJavaParis (5) ddd (5) devoxx (33) esb (6) exo (6) flex (9) geek (5) google (11) grails (5) groovy (10) humeur (12) humour (7) independant (6) iphone (12) Java (77) javascript (7) jazoon (28) jboss (22) jboss seam (12) jsf (9) jug (16) Linux (11) mac (6) mule (5) parisjug (7) paris jug (22) pjug (6) play (8) playframework (6) portlet (5) recrutement (6) ria (8) Scala (21) scrum (44) spring (23) Startup (11) usi (21) usi2010 (9) web (16) xebia (7)

    Le Touilleur Express

    Contactez-moi : nicolas@touilleur-express.fr

    Suivez-moi sur Twitter : @nmartignole

    Copyright© 2008 - 2020 Nicolas Martignole | Tous droits réservés
    • A propos de l’auteur
    • A propos du Touilleur Express
    Le Touilleur Express