28
Spring Integration HandsOn Mak Bhatamrekar http://github.com/makrand-bkar AJCP http://m eetup.com/my-ajcp Atlanta Java Concept Pros

Sprintintegration ajip

Embed Size (px)

Citation preview

Page 1: Sprintintegration ajip

Spring Integration HandsOnMak Bhatamrekar

http://github.com/makrand-bkar

AJCP

http://meetup.com/my-ajcpAtlanta Java Concept Pros

Page 2: Sprintintegration ajip

Agenda

• Introduction• Message Channel• End Points• Example• Recap

Page 3: Sprintintegration ajip

Spring Integration • Applications Need to Talk• Strategies– File Sharing– Single Database– Messaging• Most common Approach for

EAI and Basis of SI• Messages can be Enriched,

Transformed, Routed, Filtered

Page 4: Sprintintegration ajip

SI History

• Nov 2007 – First Commit• Nov 2008 – 1.0• Nov 2010 – 2.0• Jun 2013 – 2.2.4

Page 5: Sprintintegration ajip

Why Spring SI

• Spring has a good footprint• Large Range of EndPoint Adapters– File systems, FTP, REST, Sockets etc

• Light Weight• POJO Based• Non Intrusive• Zero Configuration

Page 6: Sprintintegration ajip

Before

Page 7: Sprintintegration ajip

After

Page 8: Sprintintegration ajip

Building Blocks

Page 9: Sprintintegration ajip

SI Building Blocks

• Messages• Channels• EndPoints

Page 10: Sprintintegration ajip

Message

• public org.springframework.integration; public interface Message<T>{ MessageHeaders getHeaders(); T getPayload();}• MessageBuilder – Spring Impl

Page 11: Sprintintegration ajip

Message Channel

• Decouples Consumers and Producers• Point to Point or Pub/Sub• Enforces Data Type Consistency

Spring Integration Has Pipes And Filters as Core Integration Pattern

Page 12: Sprintintegration ajip

<beans> … <int:channel id=“newAccounts”/></beans>

Page 13: Sprintintegration ajip

Message Channel

• P2P – PollableChannel• receive()• receive(long timeout)

– Queue/Priority/Rendezvous

• Pub / Sub– Subscribable Channel• Subscribe()• UnSubscribe

– MessageHandler• handleMessage(msg)

• Message Buffering

• Message Channel Intf boolean send(long timeout)

Page 14: Sprintintegration ajip

Channel Selection

• Sharing Context -– ThreadLocal / ThreadContext / Stack

• Atomic Boundaries• Buffering

Page 15: Sprintintegration ajip

Enterprise Integration Patterns

• Pipes And Filter• Bridge

Page 16: Sprintintegration ajip

EndPoints

• Produces /Consumes Messages For Channel• Out of the box endpoints – Adapters, Transformers– Filters, Routing , Splitter, Aggregation– Message Enricher, Delayer

• UniDirectional / BiDirectional– Adapters – UniDirection– Gateways - BiDirectional

Page 17: Sprintintegration ajip

Transformer

Page 18: Sprintintegration ajip

Message Adapter

Page 19: Sprintintegration ajip

Service Activator

<int:service-activator input-channel="positions-channel" ref="newPositionProcessor" method="processNewPosition"></int:service-activator>

Page 20: Sprintintegration ajip

Message Translator/ Transformer<int:object-to-map-transformer input-channel="in-channel" output-channel="stdout"></int:object-to-map-transformer>

• E.G Map, Object To String, XML, JSON• Custom Transformers Can be added by Annotations too like @Transformer

Page 21: Sprintintegration ajip

Rube Goldberg Scenario

Page 22: Sprintintegration ajip

Performance

Page 23: Sprintintegration ajip

Performance – MS Value

• Amazon – 100ms == 1% of lost sales• Yahoo – 400 ms == drops traffic 5-9%

Page 24: Sprintintegration ajip

Typical Requirements

• Latency Requirements– Few ms +

• Throughtput Requirements– Message type dependant– 10s of hundreds of thousands

Source : Andrew Elmorehttp://www.springsource.org/node/22599

Page 25: Sprintintegration ajip
Page 26: Sprintintegration ajip

Simple Test Stats

• Results– Throughtput – 350K messages/ sec– Latency - < 4us

Page 28: Sprintintegration ajip

Spring Integration Hands OnMak Bhatamrekar

github :http://github.com/makrand-bkartwitter : mak-bkar

url : www.careerinjava.com

http://meetup.com/my-ajcpAtlanta Java Concept Pros