2. Spring Intégration
Relever les défis de l’intégration d’entreprise
● Les Défis de l’intégration d’entreprise.
● Les Entreprise Integration Patterns (EIP).
● Le Framework Spring Intégration.
Le Plan
3. Spring Intégration
Relever les défis de l’intégration d’entreprise
Stéphane Goumard
● Expertise environnement Java.
○ Architecte technique
○ Consultant
○ Formateur.
4. ● Une application isolée n’existe pas.
● SI complexe, sous systèmes hétérogènes,
disparates.
● Apparition de nouvelles techno ou
évolutions “IC” <=> “DevOps”
● Défaillance de l’infrastructure (Scalable,
Interopérabilité, “Fail Over”)
.Net
Java
BigData
WS
Les Défis de l’intégration d’entreprise
Spring Intégration
Relever les défis de l’intégration d’entreprise.
5. ● Simplifier les échanges entre applications tout en tenant
compte des différentes contraintes inhérentes à un SI
hétérogène.
● Pour résoudre cette problématique d'intégration
d'environnement, il est nécessaire de mettre en place de la
glu logicielle entre ses systèmes et ses applications.
● Les Entreprise Integration Patterns (EIP) sont des patterns
pour résoudre l'intégration de systèmes hétérogènes et
Spring Intégration en est un frameworks.
Les Défis de l’intégration d’entreprise
Spring Intégration
Relever les défis de l’intégration d’entreprise
6. Application A
● File Transfert
Les différents Style D’intégration.
Spring Intégration
Relever les défis de l’intégration d’entreprise
E
x
p
o
r
t
I
m
p
o
r
t
Application B
Avantages:
- Simple à mettre en oeuvre
- Découplage (technique,
temporel, physique)
- Toujours utilisé HDFS / Hadoop
Inconvénients :
- Accès concourant.
- Pas de transactions
- Sécurité.
- Intéropérabilité
- Peu fiable.
File
7. ● Shared Database
Les différents styles d’intégration
Spring Intégration
Relever les défis de l’intégration d’entreprise
Avantages:
- Transaction simple
- Centralisation
- Sécurité
- Scalable, fail over.
Inconvénients :
- Application lié au schéma.
- Schéma unifié / figé
- Évolution difficile
=> Évolution NoSql Schéma Less.
Application A
Application B
Application C
DBC
DBC
DBC
8. ● RPC (Approche orientée Services SOA)
Les différents styles d’intégration
Spring Intégration
Relever les défis de l’intégration d’entreprise
Avantages:
- Simple mise en oeuvre programme
- Découplage technique
- Réutilisation du fonctionnel
- Maintenance
Inconvénients :
- Couplage temporel (Fail Over)
- Pas Scalable
- Interopérabilité.
- Point to Point
Application A Application B
Inerface RPCRequest
Reply
9. ● Point à Point
Les différents styles d’intégration
Spring Intégration
Relever les défis de l’intégration d’entreprise
SOA Editque
Datawarehouse
CRM
Batchs Processing
HBase / HDFS
WS Préstataires
10. ● Le Style “Asynchronous Messaging”
Les différents styles d’intégration
Spring Intégration
Relever les défis de l’intégration d’entreprise
Application A
(Producteur)
A
d
a
p
t
e
r Messages
A
d
a
p
t
e
r
Application B
( Consommateur )
Messages
Channel
Broker Messaging
11. ● Le Style “Asynchronous Messaging”
Les différents styles d’intégration
Spring Intégration
Relever les défis de l’intégration d’entreprise
● Découplage Temporel, Communication asynchrone
Notion de tampon “Buffer”, Fire and Forget.
● Logique d’intercepteur (Routing, Filtre, Transformation),
Découplage physique.
● Scalable, Fiable :
○ Routing permettre de router le message sur des
conditions.
○ Pipeline, Cadencé (Montée en charge), Claim check
patern.
○ Broadcasting : permettre la diffusion d’un message à
plusieurs, traitement en parallèle.
○ Fail Over via des mécanismes de persistance.
12. Spring Intégration
Relever les défis de l’intégration d’entreprise
WS PréstatairesHBase / HDFSBatchs Processing
SOA EditqueDatawarehouse CRM
Les différents styles d’intégration
● Le Style “Asynchronous Messaging”
13. ● Le Style “Asynchronous Messaging”
Les différents styles d’intégration
Spring Intégration
Relever les défis de l’intégration d’entreprise
● Pas de contexte transactionnel entre
production et consommation
● Propagation du contexte de sécurité
difficile
● Gestion des erreurs complexes
14. ● Messaging - le besoin de conceptualiser
Les différents styles d’intégration
Spring Intégration
Relever les défis de l’intégration d’entreprise
● Les Messages : les données sont encodées dans un message avec un header
et un body.
● Les Channel : il établit la liaison entre deux applications, c’est un chemin virtuel
par lequel est transmis et reçu les messages.
● End Point : c’est le point d’entrée et sortie du système de messaging.
● Transformer : traitement spécifique destiné à adapter un message au
traitement suivant.
● Pipe, Filter, Router : enchaînement de traitements destinés à orchestrer le
traitement d’un message.
15. ● Introduit un langage sémantique, un ensemble de patterns
et d’idéogrammes permettant de conceptualiser,
architecturer un SI sur le style du messaging.
Entreprise Intégration Patterns (EIP)
Spring Intégration
Relever les défis de l’intégration d’entreprise
● Bible, catalogue de références sur les EIP
● Ecrit en Octobre 2003 par Gregor Hohpe et
Bobby WoolF et toujours d’actualité
● C’est devenu un standard pour tous les
frameworks qui ont implémenté les EIP
comme Spring Intégration ou Apache Camel.
18. ● Modéliser les EIP à l’aide de composants techniques
pour permettre une implémentation d’intégration sur le style
du messaging.
Frameworks EIP
Spring Intégration
Relever les défis de l’intégration d’entreprise
Spring Intégration
Apache Camel
19. ● Fournir un modèle simple pour implémenter des solutions
complexes d’EAI
● Une plateforme de Messaging basée sur les principes d’
EDA (Event Driven Architecture)
● Fournir une liste des composants sur étagère pour
permettre la mise en oeuvre des Patterns EIP
● Faciliter la mise en oeuvre d’un modèle d'échanges
asynchrones orientés message dans un environnement
basé sur Spring.
Spring Intégration (Mark Fisher)
Spring Intégration
Relever les défis de l’intégration d’entreprise
20. ● Couplage lâche entre composants pour faciliter la modularité et la testabilité
● Respect de la séparation des préoccupations (separation of concerns) entre la
logique métier et la logique d’intégration.
● Points d’extension abstraits mais clairement définis afin de promouvoir la
réutilisation et la portabilité.
Eco-Système Spring.
Spring Intégration
Relever les défis de l’intégration d’entreprise
22. Pipes-and-Filters
● Le système de messaging proposé par Spring Intégration
suit le modèle pipes-and Filters.
Spring Intégration
Relever les défis de l’intégration d’entreprise
● Conception différente que par l’approche monolithique., itératif.
● Modéliser le système en une suite de sous systèmes relier par des flux
sous lesquelles on peux appliquer des filtres pour modifier les données,
les router….
● Facilite les tests, la maintenance, les évolutions, les cadences…..
24. ● Représente le fil de message qui connecte les producteurs
et les consommateurs.
● Relient les filtres entre eux.
● Pour Spring, c’est une structure de données en mémoire
mais qui offre des possibilités de persistance, de haute
disponibilité, de Claim Check, de fail over, Transaction..
Message Channel (Pipe)
Spring Intégration
Relever les défis de l’intégration d’entreprise
25. Message Channel Point-to-point (P2P)
Spring Intégration
Relever les défis de l’intégration d’entreprise
Producteur
Consommateur
Consommateur
Consommateur
Channel
● Plusieurs consommateurs
possibles.
● Le message n’est consommé que
par un consommateur.
26. Message Channel Publish-Suscribe.
Spring Intégration
Relever les défis de l’intégration d’entreprise
Producteur
Consommateur
Consommateur
Consommateur
Channel
● Plusieurs consommateurs
possibles.
● Les messages sont consommés par
l”ensemble des consommateurs.
27. Message Channel HandOff (Sync)
Spring Intégration
Relever les défis de l’intégration d’entreprise
Producteur
Consommateur
Consommateur
Channel
Thread
● La publication et la consommation des messages dans un
seul Thread.
● La consommation est synchrone.
28. Message Channel HandOff (ASync)
Spring Intégration
Relever les défis de l’intégration d’entreprise
Producteur
Consommateur
Consommateur
Channel
Thread
● La publication et la consommation sont dans des Threads
distincts.
● La consommation est asynchrone.
Thread
29. ● PoolableChannel (P2P, Asynchrone)
○ QueueChannel
■ PriorityChannel
■ RendezvousChannel.
● SubscribableChannel
○ DirectChannel (P2P, sync)
○ PublishSuscribeChannel. (Pub/Sub, Asynchrone)
○ ExecutorChannel (P2P, async)
Message Channel les différents types
Spring Intégration
Relever les défis de l’intégration d’entreprise
30. Message Channel Exemples
● Intégration fichier de contexte avec Espace de nom
spécifique
Spring Intégration
Relever les défis de l’intégration d’entreprise
<int:channel id="queueChannel">
<queue capacity="25"/>
<int:queue message-store="messageStore">
</int:channel>
<int-jdbc:message-store id="messageStore" data-source="someDataSource"/>
<int:publish-subscribe-channel id="pubsubChannel" task-executor="
someExecutor"/>
<bean id="someExecutor" class="org.springframework.scheduling.concurrent.
ThreadPoolTaskExecutor" />
Déclaration en programmation ou par
annotation possible.
31. Message
Spring Intégration
Relever les défis de l’intégration d’entreprise
● C'est l'enveloppe générique qui permet de faire transiter les
données au travers des Message Channels.
Headers :
● Stocker des "meta-data" sur le
message
● On peut stocker en programmation
des variables dans le “header” sous
forme de clé/valeur.
PayLod :
● C'est le corps du message ; il peut
encapsuler n'importe quel Objet
Java.
32. Message
Spring Intégration
Relever les défis de l’intégration d’entreprise
● Les Headers des messages des meta-data sous forme de HashMap
Header Name Header Type
ID Identifiant unique du message
TIMESTAMP Date de publication
CORRELATION_ID Permettre l’agrégation de message
REPLY_CHANNEL Permettre de préciser un channel de retour
ERROR_CHANNEL (DMQ) Permettre de préciser un channel d’erreur
SEQUENCE_NUMBER Permettre l’agrégation de message
SEQUENCE_SIZE Permettre l’agrégation de message
EXPIRATION_DATE Date d’expiration
PRIORITY Prioriser les messages dans un channel
33. Router
Spring Intégration
Relever les défis de l’intégration d’entreprise
Producteur
● Router un message vers un sous process différent en
fonction des conditions du Message header ou contenu du
PayLoad.
● Le choix des destinations peut être statique ou dynamique.
34. Router
Spring Intégration
Relever les défis de l’intégration d’entreprise
● Les composants Router statiques de Spring Intégration
HeaderValueRouter Il se base sur la valeur d'une propriété du
header pour définir le "MessageChannel"
de destination.
RecipientListRouter Permet de travailler avec plusieurs
MessageChannel de destination en
fonction de critères.
PayLoadTypeRouter Permet un routage en fonction du type de
PayLoad.
ErrorMessageExceptionTypeRouter Type Exception du PayLoad.
36. Router Exemples Dynamique
Spring Intégration
Relever les défis de l’intégration d’entreprise
public class DrinkRouter {
public String resolveOrderItemChannel(OrderItem orderItem) {
return (orderItem.isIced()) ? "coldDrinks" : "hotDrinks";
}
}
<int:router input-channel="drinks" ref="drinkRouter"
method="resolveOrderItemChannel"/>
<int:channel id="coldDrinks">
<int:queue capacity="10"/>
</int:channel>
<int:channel id="hotDrinks">
<int:queue capacity="10"/>
</int:channel>
- Cast Auto du PayLoad.
- Retour ref channel dans le contexte
37. Splitter
Spring Intégration
Relever les défis de l’intégration d’entreprise
● Découper un message en plusieurs sous-messages,
déléguer à une classe tiers.
● Plusieurs propriétés du header sont utilisées pour ensuite
résoudre l’agrégation.
○ CORRELATION_ID
○ SEQUENCE_SIZE
○ SEQUENCE_NUMBER.
38. Splitter Exemples
Spring Intégration
Relever les défis de l’intégration d’entreprise
public class OrderSplitter {
public List<OrderItem> split(Order order) {
return order.getItems();
}
}
<int:splitter id="splitter"
ref="splitterBean"
method="split"
input-channel="inputChannel"
output-channel="outputChannel"/>
<int:channel id="inputChannel"/>
<int:channel id="outputChannel"/>
39. Agregator
Spring Intégration
Relever les défis de l’intégration d’entreprise
● C’est le miroir du Splitter, il sert à agréger plusieurs
messages en un seul.
● Il utilise les propriétés spécifiques du header.
○ CORRELATION_ID
○ SEQUENCE_SIZE
○ SEQUENCE_NUMBER.
● “State-Full” problème de mémoire, utilisation du
Claim Check Patern.
40. Agregator Exemples
Spring Intégration
Relever les défis de l’intégration d’entreprise
public class OrderAgregator {
public Order agregate(List < OrderItem> orders) {
return new Order(orders);
}
}
<int:aggregator input-channel="inputChannel" ref="
orderAgregator"
method="agregate" output-channel="
outputChannel"/>
<int:channel id="inputChannel"/>
<int:channel id="outputChannel"/>
41. Channel Adaptor
Spring Intégration
Relever les défis de l’intégration d’entreprise
● Permet d'interfacer une application, un middleware, un
transport vers le système de messagerie.
AMQP File FTP/FTPS
HTTP
TCP/UDP
JDBCJPAJMS
MailMongoDbRMI ………..
42. D’autres composants
Spring Intégration
Relever les défis de l’intégration d’entreprise
Permet de filtrer un message pour un passage d’un channel à un autre.
SPEL sur header ou payload ou via une classe externe.
Permettre de transformer ou enrichir un message, pratique pour
effectuer des étapes de sérialisation/désérialisation d’objets. Spring fourni
un certain nombre de composants : XML ⇔ Object, JSON ⇔ Object...
Service Activator permet de connecter l’entrée et la sortie d’un
service, à des Channels.
Gateway est un proxy qui permet d'interagir avec un channel de manière
découplée (Idem RmiProxyFactoryBean….)
….. Le Livre Entreprise Application Pattern définit plus de 65 Idéogramme
Spring Intégration les implémente tous.
43. Sping Intégration Inter et Intra Process.
Spring Intégration
Relever les défis de l’intégration d’entreprise
Service Web Le Service.
Transformer
Transformer
Poling
Adapter
Activator
JVM
Le Service.
JVM
Le Service.
44. Cas d’usage : le comparateur de Prix
Spring Intégration
Relever les défis de l’intégration d’entreprise
Site Web
CB WS
CC File
CA
DataBase
Gateway
Request/Reply
Splitter
1 par Comp
Routing
id Comp dans Header
Transformer
PreparedStatement
Adaptor
JDBC
Transformer
Serialize SOAP
Adaptor
WS
Transformer
java.io.File
Adaptor
File
Poling
DirectoryAgregator
Spring MVC
46. Spring Intégration
Relever les défis de l’intégration d’entreprise
Cas d’usage : Gestion des Personnes.
Site Web
Web Services
XML, SOAP
Services Site
Web
Front Office
Sprint MVC
RPC
RMI
Services
CRM
API REST .Net
JSON
Services A
IA
PostgresSql
PostgresSql
Oracle
CRM
Front Office
Sprint MVC
AIA
Front Office
Client Lourd C++
47. Spring Intégration
Relever les défis de l’intégration d’entreprise
Processus Gestion des Personnes.
Site Web
Web Services
XML, SOAP
Services Site
Web
RPC / Spring Remoting
RMI
API REST .Net
JSON
Services
AIA
PostgresSql
PostgresSql
Oracle
Services
CRM
Messagerie
Transformer
Object ⇔ XML
Transformer
Object ⇔ JSON
Service Activator
Adapter WS
Adapter HTTP
Filter
Seulement Adhérent
CRM
Front Office
Sprint MVC
AIA
Front Office
Client Lourd C++
Front Office
Sprint MVC
Gateway
Router List
Identifaint Source Dans
Header
Filter
ExtId
Adapter JDBC
/Poling
49. Spring Intégration
Relever les défis de l’intégration d’entreprise
Monitoring.
Channel Interceptor
Wire-Tap
Message History
JMX
50. Spring Intégration
Relever les défis de l’intégration d’entreprise
Historique du Projet.
● 1.0.0 Nov 2008
● 2.0.0 Nov 2010
● 2.1.0 Janv 2012
● 2.2.0 Mai 2013 Le projet en pleine essor.
accélération des versions tous les 2-3 Mois.
● 2.2.5 Septembre 2013
● 2.3.0M3 Sept 2013
● …...
Beta version en parallèle.
51. Spring Intégration
Relever les défis de l’intégration d’entreprise
FAQ : Sprint Intégration Vs Apache Camel
● Sa facilité d’intégration et d’utilisation dans un
écosystème Spring.
● Composant sur étagère, pas de différente
version pour un même composant.
● 1:1 EIP, pas de concept supplémentaire.
52. Spring Intégration
Relever les défis de l’intégration d’entreprise
FAQ : Et les ESB ?
● Un ESB est une offre Middleware complète.
● Spring Intégration est un frameworks une
boite à outils basé sur les EIP.
● Spring Intégration est dis LightWeight.
● Spring Intégration l’ESB Light.