About Enterprise Integration Patterns - DZone

50 downloads 177 Views 246KB Size Report
Enterprise Integration Patterns have become the standard way to describe, ... Enterprise Integration Patterns and gives you examples of how to implement themĀ ...
!"#$%&%'($)*"#$+%,#'-").,##$%"()/'#0)1&,20$)3,4$5 !" #$%&'()*'+, !"#$%&'(-(),.+/0%.12,3(45!3(60781.+7.&0+ )*#+$-(4,.+0901'+(),.+/0%.12,(:%..+0,'(;1.8(69%78+(#%$40'&K$>#4@&'4*&9@*%-'"#*&9=4).*14'$@$'$9>$4>"':D4#.$4@*'1#4*94"4#7&4>"':41$'*$1D4 %-*:$14(&-4#.'&-%.4#.$4&$4>"94;$9$@*#4"147$++=4).$4&:$D4#."#4*149$"'+(4$9%+*1.4 '$":";+$4-1*9%49&-914"9:46$';1= G$4@&>-14&94#.$4

.'&$()1"9);'5#$%( )#QYNZ

C2;(7%,(;+(9+0A20 =@"#+3,> ="#+3,> 77=!"#$7 +".?&'$()*+,+,)#"-,")./&@> 77=3#7 +".?&-.",23)3"4/(!#"$5"-,"&@> 77=3#7 +".?&-.",23)849.-43,5"-,"&@> 77=3#7

+".?&'$()*+,+,)#"-,"):"#2,((&@> =@"#+3,>

#$% )#QYN_

C2;(7%,("2&(=+72&9$+(1,=1B1=&%$(9027+''1,/( '.+9'('2(.8%.(.&*>$(,2=+>(P20(

L"6"4QMP

!.&*>$ !"#$%&'$()*+,+,)#"-,"&0 771()'"(#%0 77771*)#%%A,4-,"%&3B:,&01./%&C. -D,3&67

&C.DDB&0013#%&'$()*+,+,)#"-,")C .-D,3&0 77771*)#%%A,4-,"%&3B:,&01.(E*+4 9F#%&D4-D,3&0013#%&'$()*+,+,)#" -,")D4-D,3&0 77771'&)#+*",#%013#%&'$()*+,+,) #"-,")$.(2&0 771#%-%0; )8/R(),(.8+(02&.+(%*2B+(,/-%0(7%,(*+(2 )8/R(^2&(7%,(72,.1,&+(02&.1,/(%A.+0(.8+(78217+( +,='> M0'*9%4QMP

!.&*>$ ="#+3,> 77=!"#$7+".?&'$()*+,+,)#"-,"&@> 77=()'"(#> 7777=*)#%> 777777=(.$:9,>GHA,4-,"13B:,I7./7 JC.-D,36C.DDBJ=@(.$:9,> 777777=3#7 +".?&'$()*+,+,)#"-,")C.-D,3&@> 7777=@*)#%> 7777=*)#%> 777777=(.$:9,>GHA,4-,"13B:,I7??7 JD4-D,3J=@(.$:9,> 777777=3#7 +".?&'$()*+,+,)#"-,")D4-D,3&@> 7777=@*)#%> 7777='&)#+*",#> 777777=3#7 +".?&'$()*+,+,)#"-,")$.(2&@> 7777=@'&)#+*",#> 77=@()'"(#> =@"#+3,> )8/R(),(5901,/(R5M("2&(7%,,2.(1,B2G+(72=+3( %'(2992'+=(.2(.8+(J%B%(R5M(.8%.(1'(`bbc(J%B%>( ?2(+@90+''(.8+(90+=17%.+'(A20(.8+(78217+'(;+( ,++=(.2(&'+(%($%,/&%/+>(E+(;1$$(&'+(1*( )8/R(^2&(7%,(%$'2(&'+(%($11&'3(;$"9(20(#'"91@&'$11&'(1$11&' :+M9.27294((7 5"-,"F"4/(!#"$R"#2,((#"7 .$:9,$,/3(71+'(#,,'+7H 7777:+M9.278#.-7 :"#2,((%ES2A4/D,7,S2A4/D,07 3A"#C( ES2,:3.#/7H

77777777@@7-#7$,((4D,7 3"4/(943.#/7A,",7./7",D+94"7 T48472#-, 7777I I !"#$%&-.",23)3"4/(!#"$5"-,"&01! +'(#,,%/,C7 5"-,"F"4/(!#"$R"#2,((#"%00; S$"9 ),'.+%=(2A(.8+(9027+''20(;+(7%,(&'+(!+%,( U:QJQV(1,'.+%=>(6,(%=B%,.%/+(2A(&'1,/(%(!+%,( 2B+0(:027+''20(1'(.8+(A%7.(.8%.(;+(=2(,2.(8%B+( .2(1&91#"9#(.2(*&1$=(%,( f6#eg('.01,/(%'(0+'92,'+>( !"#$%&$./4)32:)@@9#249A#(3)UUUU V3,S39./,?3"+,&0 777713#%&'$()*+,+,)#"-,")./&0 77771&+0%,4'+.%('%,&0%&%&WXY&00 ; M0'*9%4QMP

/'&>$11&' ="#+3,> 77=!"#$7 +".?&-.",23)3"4/(!#"$5"-,"&@> 789!+'(#,,8+#4:7&+0%,4'+.#+7;< =@"#+3,> =M,4/7.-?&3"4/(!#"$,"&7 294((?&2#$1$B2#$:4/B15"-,"F"4/( !#"$R"#2,((#"&@> ),(5901,/(R5M(#%( S$"9 ="#+3,> 77=!"#$7 +".?&-.",23)3"4/(!#"$5"-,"&@> 789/#0%8+#4:7&+0%,4'+.#+7;< =@"#+3,> =M,4/7.-?&3"4$(!#"$,"&7 294((?&2#$1$B2#$:4/B15"-,"F"4/( !#"$K,4/&@> )'"91@&'< ="#+3,> 77=!"#$7 +".?&$./4)32:)@@9#249A#(3)UUUUV 3,S39./,?3"+,&@> 77=3#7+".?&'$()*+,+,)#"-,")./&@ > 77=&+0%,4'+.> 77777=('%,&0%&>WXY=@('%,&0%&> 77=@&+0%,4'+.> =@"#+3,>

,99&#"#*&94QMP

^2&(7%,(%$'2(&'+(.8+(T!&91-(P20(+@%(P20(1,'.%,7+("2&(7%,(&'+( TS&:(3(TE$":$'1(9%0% !"#$%&'$()*+,+,)./M#S&0 777714"$&#+%A,4-,"%&3,(3&01.(Z# 3E*+49F#%&3"+,&00 777713#%&'$()*+,+,)#"-,"&0;

M0'*9%4QMP

P20(.8+(5901,/(R5M(;+(&'+(K:%.8(.2(+B%$&%.+( .8+(90+=17%.+>(?8+(@&#,&(1'(%('9+71%$( '820.8%,=(1,(#%

77=!"#$7+".?&'$()*+,+,)./M#S&@> 77=4"$&#+> 7777=S:43A>@&#,&7?7 J!49(,J=@S:43A> 7777=3#7+".?&'$()*+,+,)./M#S&@> 77=@4"$&#+> =@"#+3,>

BC",4'2)=->#$% )#QYN`i

C2;(7%,("2&(%B21=(.8+(=+9+,=+,7"(2A(.8+( 02&.+0(2,(%$$(92''1*$+(=+'.1,%.12,'(;81$+( ( !"#$%&'$()*+,+,)#"-,"&0 77771!+'(#,,A#4%$B

77=!+'(#,,8 ",!?&$B 7777=A,4-,">-,(3./43.#/(=@-,(3. /43.#/(> 77=@+#("!"#%&B",&> =@"#+3,> ,99&#"#*&94QMP

public class MyDynamicRouter { @Consume(uri = "jms:queue:order") @RecipientList public List route(@XPath("/customer/id") String customerId, @Header("location") String location, Document body) { // query a data store to find the best match of the endpoint based on the input parameters // and return the destination(s) in the List } }

)8/R(Y2.17+(82;(;+(&'+=(!+%,(:%0%- :+M9.278#.-72#/!."$%=C#0-#+,8 N4:7A,4-,"(67OK#-B7Q3"./D7M#-BI7 H 7777Q3"./D^_7",2.:.,/3(7?7111 7777)#0-#+,6!?&D7-#,&"%0&"'%,7E8 +#("!"#%&,FG I

M0'*9%4QMP

M#"#*> ="#+3,> 77=!"#$7+".?&'$()*+,+,)./M#S@> 77=$+93.24(3> 7777=3#7+".?&!.9,)@@M42]+:&@> 7777=3#7+".?&(,-4)./M#S&@> 77=@$+93.24(3> =@"#+3,> Q(9" ),(.81'(+@% =M,4/7.-?&$B :+M9.27Q3"./D^_7"#+3,%Q3"./D7 M#-B07H 77",3+"/7/,C7Q3"./D^_7 H7&!.9,)@@M42]+:6711117I I ,99&#"#*&94QMP

),(.8+(#&'.2(#% 77=!"#$7+".?&'$()*+,+,)#"-,"&@> 77=(:9.3> 7777=S:43A>@./8#.2,@9./,\3,$(=@ S:43A> 7777=3#7 +".?&(,-4):"#2,((5"-,"a./,&@> 77=@(:9.3> =@"#+3,> 6,=(1,(.81'(02&.+(;+('9$1.(.8+(A1$+'(&'1,/(%( 0+/&$%0(+@90+''12, ="#+3,> 77=!"#$7+".?&'$()*+,+,)#"-,"&@> 77=(:9.3> 7777=3#],/.b,"73#],/?&%^Wcdefc g_h0;&7+#J#K:7&+?#7@> 7777=3#7 +".?&(,-4):"#2,((5"-,"a./,&@> 77=@(:9.3> =@"#+3,> )8/R(59$1.(+B%$&%.+'(%,( #"D14:4A2,124$,91ES:",((.#/(.2( 902B1=+('2 7777=.#&)'-7M,4/?&.LM!$"&&#+&7 $,3A#-?&,!$"&N#&@> 7777=3#7 +".?&(,-4):"#2,((5"-,"a./,&@> 77=@(:9.3> 77=M,4/7.-?&.LM!$"&&#+&7 294((?&2#$1$B2#$:4/B1NBQ:9.33," &@> :+M9.27a.(37,!$"&N#%Q3"./D7 M#-B07H 7777@@7(:9.37+(./D7'48472#-,7 4/-7",3+"/747a.(3 7777a.(37:4"3(7?7111 7777",3+"/7:4"3(; I

1++%$+,#-% )#QYNkb

C2;(=2(;+(72(6'(;+(7%,( 0+7+1B+((?8+( .1 !"#$%&'$()3#:.2)9#4/)*+#3,&0 777714DD",D43,%01A,4-,"%&9#4/\&010JJ+#J0&"'%M&+0&#JL%M,(3l+#3 ,0 77771('.!$#&"'%1+#-"(0&#%A,4-," %ES2A4/D,1WLL[ELWFE"#$(.8%.('1/,%$'( ;8+,(;+(8%B+(0+7+1B+=( 777777=A,4-,">9#4/\-=@A,4-,"> 7777=@2#"",943.#/ES:",((.#/> 7777=('.!$#&"'%1+#-"(0&#> 777777=,".!$#>G HA,4-,"1X4$,9WDD",D43,-Q.b,I7>7 n=@,".!$#> 7777=@('.!$#&"'%1+#-"(0&#> 77=@0JJ+#J0&#> 77=3#7+".?&(,-4)M,(3a#4/l+#3,&@ > =@"#+3,> =M,4/7.-?&M,(3l+#3,&7 294((?&2#$1$B2#$:4/B1K,(3l+#3,Q 3"43,DB&@> )8/-(E+(&'+(.8+(1*&(X4$,9WDD",D43,-,Q.b,(1'( .8+(B%$&+(A20(.8+(72,'.%,.( ES2A4/D,1WLL[ELWFE )8/-()A(.8+(72 :+M9.27M##9,4/7 .(X#$:9,3,%OP,4-,"%ES2A4/D,1WLL [ELWFE$(,2=+>(#%(^2&( 7%,(902B1=+("2&0(2;,(72 M#'$" 77=!"#$7 +".?&'$()3#:.2)(3#2])*+#3,&@> 77=",(,*+,/2,> 7777=S:43A>@*+#3,@O(B$M#9=@S:43 A> 7777=M432Ac2#/!.D7 M432AF.$,#+3?&jffff&@> 77=@",(,*+,/2,> 77=3#7+".?&(,-4)*+#3,(&@> =@"#+3,> M#'$" 77=",(,*+,/2,> 7777=S:43A>@./8,/3#"[email protected]=@S:43 A> 7777=(3",4$c2#/!.D7 3.$,#+3?&pjfffff&@> 77=@",(,*+,/2,> 77=3#7+".?&(,-4)*+#3,(&@> =@"#+3,> Y2.17+(.8%.("2&(7%,(+,%*$+('.0+%(?81'(%$$2;'( "2&(.2(02&.+(7+0.%1,(+@7+9.12,'(=1AA+0+,.$"(20( +B+,(0+'+.(.8+(A%1$&0+(*"((?81'(%$$2;'("2&(.2(%$.+0(.8+( +>(.2('+.(%,"(7&'.2)0%%#$% &'$()*+,+,),""#"&0 77771$4S.$+$[,-,9.8,".,(%p00; !"#$%1110 5&-#$41>&0$ !"#$%&'$()*+,+,),8,/3&0 77771,""#"P4/-9,"%-#0-B#&&#+>)0 %%#$%01$4S.$+$[,-,9.8,".,(%i00 77771$+93.24(3%013#%&9#D),8,/3& 67&(,-4)A4/-9,E8,/3&0; ),(.81'(02&.+(;+(2B+001=+(.8+(/$2*%$('729+(.2( &'+(&9(.2(A1B+(0+=+$1B+01+'3(;8+0+(%'(.8+(/$2*%$( 2,$"(8%'(.80++>(^2&(7%,(2A(72&0'+(%$'2('+.(%( =1AA+0+,.(+0020(]&+&+(=+'.1,%.12,-( -,4-a,33,"XA4//,9D7$'JS/0-PT#%& 7F1$4S.$+$[,-,9.8,".,(%i0 /&+*>(4;"1$: 5++(?0%,'%7.12,%$(#$1+,.

M0'*9%4QMP

?8+(+0020(8%,=$+0(1'(72,A1/&0+=(B+0"(=1AA+0+,.$"(

1,(.8+(J%B%(R5M(B'>(.8+(5901,/(R5M>(?8+( 5901,/(R5M(0+$1+'( ="#+3,7 ,""#"P4/-9,"[,!?&.LU#0-B#&&#+>) 0%%#$&> 777111 =@"#+3,> P20(*2.8(.8+(+0020(8%,=$+0(1.'+$A(1'(72,A1/&0+=( &'1,/(%(0+/&$%0(5901,/(*+%, =M,4/7.-?&.LU#0-B#&&#+>)0%%#$&7 294((?&'+J60!0()#6(0.#$6/?"$-#+ 6U#0-B#&&#+>)0%%#$5?"$-#+&> 77=:"#:,"3B7 /4$,?&-,!4+93 77=:"#:,"B7 /4$,?&$4S.$+$[,-,9.8,".,(&7 849+,?&i&@> 77=:"#:,"3B7/4$,?&-,94B&7 849+,?&ifff&@> =@M,4/> /&+*>(X;"1$: 5++(?0%,'%7.12,%$(#$1+,.

5%,47"/)%, ?8+(+$+B+,(9%..+0,'(1,(.81'(0+A+0+,7+(7%0=(72B+0'(.8+(20/(

?8+(8272