2011-07-27 7 views
8

Me gustaría utilizar Spring Integration para implementar un enrutador basado en contenido que use un canal de salida predeterminado si el valor de expresión no coincide con ninguna de las asignaciones. Aquí está mi definición de frijol:Spring Integration: enrutador basado en contenido con canal de salida predeterminado?

<int:router input-channel="channel_in" default-output-channel="channel_default" expression="payload.name"> 
    <int:mapping value="foo" channel="channel_one" /> 
    <int:mapping value="bar" channel="channel_two" /> 

Sin embargo, parece que el canal de salida por defecto no se usa nunca. Si la expresión se evalúa a, p. 'Baz', el router parece estar en busca de un canal llamado 'baz', en lugar de encaminar a la 'channel_default' canal:

org.springframework.integration.MessagingException: failed to resolve channel name 'baz' 
    Caused by: org.springframework.integration.support.channel.ChannelResolutionException: 
    failed to look up MessageChannel bean with name 'baz' 
    Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: 
    No bean named 'baz' is defined 

es lo que quiero que sea posible utilizar el espacio de nombres XML, o me necesito codificar mi propia implementación?

Respuesta

9

Resulta que todo lo que debía a hacer este trabajo fue establecer el router ignoran muchos canales de resolución de nombres-fracasos atribuyen a falso:

<int:router input-channel="channel_in" default-output-channel="channel_default" 
    expression="payload.name" ignore-channel-name-resolution-failures="true"> 
    <int:mapping value="foo" channel="channel_one" /> 
    <int:mapping value="bar" channel="channel_two" /> 
</int:router> 

pensé que había intentado antes, pero Parece que no.

+10

Si está leyendo esto para Spring Integration 2.1+, ignore-channel-name-resolution-failures ha sido eliminado. Puede obtener el mismo efecto utilizando resolución-required = "false". Ver http://static.springsource.org/spring-integration/reference/htmlsingle/#2.1-router-standardization – Joe

Cuestiones relacionadas