2011-07-27 3 views
8

私はSpringのインテグレーションを使用して、式の値がいずれのマッピングとも一致しない場合に、デフォルトの出力チャネルを使用するコンテンツベースのルータを実装したいと思います。しかし、デフォルトの出力チャネルが使用されることはありませんようだ春の統合:デフォルトの出力チャネルを持つコンテンツベースのルータ?

<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" /> 

:ここに私のBean定義です。式が例えばに評価される場合。 「バズ」は、ルータは代わりに「channel_default」チャンネルへのルーティングの「バズ」という名前のチャンネルを探しているように見えること:

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 

私はXML名前空間を使用して、すべての可能な場合、または私が何をすべきかです私自身の実装をコード化する必要がありますか?

答えて

9

属性をfalseに私はこの仕事をするためにしなければならなかったすべては、ルータの無視チャンネル名解像度-失敗を設定したことが判明:

<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> 

私は私の前にいることをしようとしたと思ったが、私はそうしなかったようだ。

+10

Spring Integration 2.1以上でこれを読んでいる場合は、ignore-channel-name-resolution-failuresが削除されています。 resolution-required = "false"を使用することで同じ効果を得ることができます。 http://static.springsource.org/spring-integration/reference/htmlsingle/#2.1-router-standardizationを参照してください。 – Joe

関連する問題