2012-12-03 15 views
5

Sono nuovo all'integrazione primaverile. Ho pochi canali configurati nel mio file di configurazione come di seguito.Integrazione molla Utilizzo della catena di gestione messaggi?

<int:channel id="channelOne" /> 
<int:channel id="channelTwo" /> 
<int:channel id="channelThree" /> 

posso usare MessageHandlerChain (http://static.springsource.org/spring-integration/docs/2.0.0.RC1/reference/html/chain.html) in questo scenario?

Grazie!

+1

in generale, si dispone di 2 chann definito da els, un canale di input e output. Può spiegare ulteriormente ciò che si sta cercando di fare ... – tjg184

+0

@ tjg184, devo canale di canali e di uscita di un ingresso, ma hanno un altro canale (channelTwo) tra ingresso e di canale di uscita che fa una sorta di convalida. Posso usare un messaggio catena gestore in questo scenario – user1016403

risposta

3

Vorrei dare un'occhiata agli intercettori di canale (http://static.springsource.org/spring-integration/docs/latest-ga/reference/htmlsingle/#channel-interceptors). Questi ti consentirebbero di fare qualcosa prima che il messaggio colpisca il tuo canale di input, che presumo sia channelOne. È possibile registrare un messaggio o generare un'eccezione, ecc. A seconda del caso d'uso.

<channel id="channelOne"> 
    <interceptors> 
     <ref bean="yourValidatingInterceptor"/> 
    </interceptors> 
</channel> 

<beans:bean id="yourValidatingInterceptor" class="com.yourcompany.YourValidatingInterceptor"/> 
+0

versione attuale è 2.2.0: http://static.springsource.org/spring-integration/docs/2.2.0.RELEASE/reference/htmlsingle/#channel-interceptors, ma è meglio utilizzare il link 'ultima-ga': http://static.springsource.org/spring-integration/docs/latest-ga/reference/htmlsingle/#channel-interceptors –

+0

@GaryRussell grazie Gary. – tjg184

10

Una catena è una comodità per semplificare la configurazione quando gli endpoint sono collegati da canali diretti:

Invece di

<int:channel id="foo1"/> 

<int:service-activator input-channel="foo1" output-channel="foo2" ref="s1" /> 

<int:channel id="foo2"/> 

<int:service-activator input-channel="foo2" output-channel="foo3" ref="s2/> 

<int:channel id="foo3"/> 

<int:service-activator input-channel="foo3" output-channel="foo4" ref="s3" /> 

<int:channel id="foo4"/> 

È possibile utilizzare

<int:channel id="foo1"/> 

<int:chain input-channel="foo1" output-channel="foo4">  
    <int:service-activator ref="s1" /> 
    <int:service-activator ref="s2" /> 
    <int:service-activator ref="s3" /> 
</int:chain> 

<int:channel id="foo4"/> 

Si prega di utilizzare il current documentation .

1

usiamo Catena di gestione messaggi quando un set di gestori deve essere collegato a in modo lineare.

<int:chain input-channel="marketDataInputChannel"> 
    <int:splitter ref="marketDataSplitter"/> 
    <int:service-activator ref="marketFieldServiceActivator"/> 
    <int:aggregator ref="marketDataAggregator"/> 
    <int:service-activator ref="marketItemServiceActivator"/> 
</int:chain> 

nell'esempio sopra, i dati di uscita del canale splitter sarà l'ingresso di servizio-attivatore, e l'uscita di servizio-attivatore sarà l'ingresso di aggregatore .. .
spero che questa spiegazione aiuterà a capire l'utilità di <int:chain />

+0

Non si dispone di un'uscita-canale definito per questa catena ... Ho visto questo in altri posti e credo che è legittimo, ma da dove viene l'uscita del "marketItemServiceActivator" andare? – HDave

Problemi correlati