3. L'intégra,on
avec
des
systèmes
externes
est
un
challenge
Difficulté
d'intégra,on
des
données
et
des
services
4. Spring
Integra,on
Une
brique
de
messaging
légère
• "Pipe
and
Filter"
Architecture
– Message
(Data)
– Endpoint
(Filter)
– Channel
(Pipe)
• Implémenta,on
non
monolithique,
à
base
de
messages
Channel
Endpoint
Message
Message
Endpoint
Source
?
Target
?
Endpoint
...
Channel
5. Entreprise
Integra,on
PaGerns
(EIP)
• Transformer
• Router
• Filter
• SpliGer
• Aggregator
• ServiceAc,vator
• Poller
• etc
Spring
Integra,on
fournit
un
support
des
EIP
6. External
Business
Partener
Un
usage
intra
et
inter
applica,on
JVM
JVM
`
B2B
•
Business
to
Business
Integra,on
(B2B)
•
Inter
Applica,on
Integra,on
(EAI)
•
Intra
Applica,on
Integra,on
EAI
Core
Messaging
Applica,on
Integra,on
7. Spring
Integra,on
Une
plateforme
d'intégra,on
à
base
d'adaptateurs
APPLICATION
Adapter
Adapter
Adapter
JMS
Web
Services
RMI
XML
.
.
.
Spring
Integ.
Adapter
...
hGp://www.springsource.org/extensions/se-‐sia
9. Exemples
de
cas
d'u,lisa,on
(1/2)
FILE
FILE
FILE
JMS
Queue
JMS
Consumer
JMS
Consumer
Flow
Spring
Integ.
JMS
File
File
Inbound
channel
Adpter
Outbound
channel
Adpter
Infra.
10. Exemples
de
cas
d'u,lisa,on
(2/2)
REST
API
DataStore
request
response
Flow
Spring
Integ.
Bean
Spring
Publish-‐Subscribe
Channel
Synchronous
HTTP
Gateway
Endpoint
Outbound
channel
Adpter
Response
Channel
Service
Ac,vator
11. Un
modèle
de
programma,on
Spring
<!– Fichier Spring Application Context -->
<!– Inbound Endpoint -->
<int-file:inbound-channel-adapter id="inputChannel"
directory="file:${input.directory}">
<int:poller task-executor="pool" fixed-delay="1000">
<transactional />
</int:poller>
</int-file:ibound-channel-adapteur>
<!– Pool de threads -->
<task:executor id="pool" pool-size="10"/>
<!– Pollable Channel -->
<int:channel id="inputChannel" />
<!– Call Spring Java Bean -->
<int:service-activator
input-channel="pollableChannel"
ref="myServiceBean" />
Dependency
Injec,on
Method
Invoca,on
Task
Scheduling
12. Déploiement
• 1
simple
librairie
non
invasive
• Pas
de
container/serveur
(ou
de
broker)
• Aucune
installa,on
• Pas
de
configura,on
logicielle
<dependency>
<groupId>org.springframework.integra,on</groupId>
<ar,factId>spring-‐integra,on-‐core</ar,factId>
<version>${spring.integra,on.version}</version>
</dependency>
LIB
APPLICATION
Uses
Spring
Integra,on
Library
13. Spring
Integra,on
comme
"Middleware
Integra,on
plalorm"
AN
INETGRATION
APPLICATION
(with
only
Spring
Integra,on
Jars)
APPLICATION
A
APPLICATION
B
Exis,ng
Vendors
Future
Requirements
Adapter
Adapter
Adapter
Adapter
14. Le
Channel:
l'élément
central
• Découple
le
producteur
et
le
consommateur
Producer
Message
Consumer
Message
• En
mémoire
(Pas
de
broker
&
pas
de
persistance
par
défaut)
• Facilite
le
"buffering"
et
les
mécanismes
d'intercep,on
• Se
caractérise
par
ltype
de
"delivery"
et
le
type
de
"handoff"
Synchronous
Handoff
Asynchronous
Handoff
Producer
Consumer
Consumer
Consumer
Point-‐to
Point
Delivery
Producer
Consumer
Consumer
Consumer
Publish-‐Subscribe
Delivery
15. Spring
Integra,on
et
Spring
Batch
File
Spring
Batch
Admin
Spring
Integra,on
Spring
Batch
DB
Batch
Applica,on
Spring
Integra,on
en
tant
que
brique
addi,onnelle
à
Spring
Batch
16. Spring
Integra,on
et
Spring
Batch
Modèle
de
déléga,on
File
ItemReader
ItemProcessor
ItemWriter
Report
A
Spring
Integra,on
Flow
"Chunk-‐oriented"
Step1
Step2
Spring
Batch
Gateway
17. Spring
Batch
et
Spring
Intégra,on
Modèle
par
"Évènement"
File
SI
JobLauncher
Endpoint
File
JobLauncherRequest
Spring
Batch
JobLauncher
Transformer
Spring
Integ.
Spring
Batch
Spring
integ.
Pollable
Inbound
Channel
Adapter
18. Scaling
Spring
Integra,on
Flow
"Claim
Check
PaGern"
Incoming
Claim
Check
transformer
Original
Object
UUID
Outgoing
Claim
Check
transformer
Original
Object
Message
Store
Original
Object
Generated
Key
ID
(UUID)
19. High
Availability
(HA)
Architecture
Inbound
Adapter
Inbound
Adapter
SI
Flow
SI
Flow
Compe,,ng
Consumers
Message
Queue
(JMS.,
RabbitMQ,
etc)
A
ac,ve
node
for
a
single
source
Default
is
round-‐robin
load
balancer
with
failover
Threads
Thread
Pool
Dispatching
Message
23. Conclusion
• Brique
d'intégra,on
légère
à
base
de
messages
– Véritable
boîte
à
ou,ls
pour
la
mise
en
place
des
EIP
• Extension
du
modèle
Spring
– Simplifie
le
développement
– Le
code
de
plomberie
de
messaging
et
de
threading
est
pris
en
charge
• Très
simple
à
introduire
dans
son
système
d'informa,on
– Brique
logicielle
non
invasive
– Configura,on
déclara,ve
des
endpoints
• Solide
plateforme
d'adaptateurs
pour
adresser
les
différentes
complexités
d'intégra,on