spring integrationgotocon.com/dl/2011/geeknights/spring_integration.pdf · java objekt id timestamp...
TRANSCRIPT
![Page 1: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/1.jpg)
Spring Integration
![Page 2: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/2.jpg)
Agenda
Spring Beans, MessagingMessageChannelMessage Endpoints
Pause med sandwichChannel AdaptorsLeveringssikerhed og transaktionerTestToolingAfrunding
![Page 3: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/3.jpg)
Spring Beans
Traditionelle Spring Beans<bean id="espressoService" class="it.bezzera.Bz07P"/>
Spring custom beans<si:channel id="orders"/>
![Page 4: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/4.jpg)
Messaging
Løs kobling af systemerRobust arkitekturOrkestrering af beskeder og kanalerBankerne elsker det
![Page 5: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/5.jpg)
Spring Integration
Bygger på ideer af EAIPLetvægt messaging i Spring applikationerEn håndfuld adaptere giver "...higher-level of abstraction for remoting, messaging..."Simpel model for opbygning af EAI
![Page 6: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/6.jpg)
Messagepackage org.springframework.integration; public interface Message<T> { MessageHeaders getHeaders(); T getPayload();}
class MessageHeaders implements Map<String, Object>, Serializable Eksemplerpå Message Headers anvendt af SI-komponenter:
Metadata til procesering
Kan være ethvertjava objekt
id timestamp
correlationId replyChannel
errorChannel expirationDate
priority sequenceNumber
sequenceSize sequenceDetails
file_name file_originalFile
![Page 7: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/7.jpg)
DEMO 1!
Message payload og headere
![Page 8: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/8.jpg)
Spring Integration Channel
Medie til at overføre messages fra producer til consumer.
Point-to-point channelBeskeden sendes kun til en consumer. Producer og consumer kører i samme tråd.
Publish-subscribe channelFlere modtagere. Consumere skal kunne modtage message når den sendes af producer.
Queue Channel Consumere poller for besked når de er klar.
![Page 9: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/9.jpg)
Spring Integration Channel - fortsat
PersistensChannels er default in-memory!messageStore kan angives på channel
Andre channel-typer:PriorityChannel: Messages prioriteres efter priority header eller prioriteringsregel. RendevousChannel: Som queue med kapacitet 0. Blocker producer indtil consumer har taget beskeden.
![Page 10: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/10.jpg)
DEMO 2!
Queue channelPublish-subscriber channel
![Page 11: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/11.jpg)
Medfølgende kanaler
errorChannelmodtager for alle ErrorMessagespoint-to-point
nullChannelækvivalent til /dev/null
![Page 12: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/12.jpg)
Wiretap
Mulighed for en ekstra modtager på en channelGodt til eksempelvis
logning og monitorering Arkivering
![Page 13: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/13.jpg)
Chains
Når point-to-point kanaler er overflødige
<chain input-channel="..." [output-channel="..."]> <header-enricher .../> <transformer .../> <router .../></chain>
![Page 14: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/14.jpg)
Flyt ansvar for integration ud af forretnings-kodenDeklarativ komponent-konfigurationInversion of Control
Transformer Får besked fra inputChannel, ændrer den og sender videre på outputChannel.
Filter Afgør om en besked skal sendes videre. Regel udtrykkes i enten SPeL eller kodes i java.
Router Vælger hvilken kanal en besked skal sendes videre ad.
Splitter Splitter en besked på i flere, som sendes videre ad samme channel.
Aggregator Samler flere beskeder fra en channel baseret på regler for hvor mange og hvilke der skal til.
Service Activator
Kalder en synkron service med beskedens payload som input og sender servicens output videre som payload.
Channel Adaptor Forbinder kanalen med et andet system eller transport-mekanisme.
Message Endpoints
![Page 15: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/15.jpg)
DEMO 3!
Transformers ogAdaptors
![Page 16: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/16.jpg)
Pause
![Page 17: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/17.jpg)
Inbound Channel adapter
Outbound channel adapter
Channel adapters/Gateways inkluderet i Spring Integration:Feed RSS/ATOMFilFTP/FTPS/SFTPHTTPMailTCP/UDP JDBC
Channel Adapters
JMSRMIStreamTwitterWeb ServiceXMPP
![Page 18: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/18.jpg)
Splitter og aggregator
Splitter en List til et antal beskederTildeler header på hver besked
correlation_idsequence_numbersequence_size
Aggregator samler et antal af beskeder til en List efter samme regler
![Page 19: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/19.jpg)
Router
Sender beskeder på bestemte channelsRegler kan være baseret på
IndholdTypeHeadereOg andet
![Page 20: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/20.jpg)
DEMO 4!
Splitter, aggregator og router
![Page 21: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/21.jpg)
Leveringssikkerhed og transaktionerSpring Transaction Manager
Transaktion er bundet på trådenTransaktionelle channels
Queue-backed channel på persistent message storeJMS-backed channel
Initialisering af transaktionBruger-drevet
En tråd startes udefra og rammer SI. Tx skal være sat op på forhånd.Daemon-drevet
Poller/Scheduler starter en tråd. <poller max-messages-per-poll="1" fixed-rate="1000"> <transactional transaction-manager="txManager" isolation="DEFAULT" propagation="REQUIRED" read-only="true" timeout="1000"/> </poller>
Semi-transaktionelle channel adaptersAlle pånær JDBC og JMS!DIY: Spring Transaction postCommit() hook
![Page 22: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/22.jpg)
Unit test
Brug mock værktøjjMock (kan klare asynkrone tilstande fra version 2.6)Mockito
Del AppContext op i hvad der kun har med integrationslogik at gøre
Udskil Adaptorer, egne beans, messagestore osv.
![Page 23: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/23.jpg)
Demo 5
Unit testing
![Page 24: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/24.jpg)
ToolingIDE
IntelliJ IDEA 10.5Visuel præsentation af dependencies mellem spring beans
SpringSource Tool Suite (STS)Visuel præsentation af flow (men grim og ubrugelig)
RTEStandard Java/Spring (JVM v5+, JMX, JDBC osv.)
![Page 25: Spring Integrationgotocon.com/dl/2011/GeekNights/Spring_Integration.pdf · java objekt id timestamp correlationId replyChannel errorChannel expirationDate ... Web Service XMPP. Splitter](https://reader036.vdocument.in/reader036/viewer/2022070722/5f01dd277e708231d401680b/html5/thumbnails/25.jpg)
Afrunding
Andre interessante aspekter ved Spring Integration:Gateways versus channelsUnderstøttelse af XML payloads
ValideringXSLTXpath
Security på channelsJava annotation API til Message PublishersGroovy support
Kom godt iganghttp://www.springsource.org/spring-integrationMasser af samples
Apache Camel Alternativ til SI