2011-07-27 14 views
8

Tôi muốn sử dụng Spring Integration để triển khai bộ định tuyến dựa trên nội dung sử dụng kênh đầu ra mặc định nếu giá trị biểu thức không khớp với bất kỳ ánh xạ nào. Dưới đây là định nghĩa bean của tôi:Tích hợp mùa xuân: Bộ định tuyến dựa trên nội dung với kênh đầu ra mặc định?

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

Tuy nhiên, có vẻ như không bao giờ được các kênh đầu ra mặc định được sử dụng. Nếu biểu thức đánh giá, ví dụ: 'Baz', router dường như được tìm kiếm một kênh có tên là 'baz', thay vì định tuyến đến 'channel_default' kênh:

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 

phải là những gì tôi muốn ở tất cả có thể sử dụng không gian tên XML, hay tôi cần phải mã hóa việc triển khai của riêng tôi?

Trả lời

9

Hóa ra rằng tất cả tôi phải đến để làm cho công việc này là để thiết lập của router bỏ qua kênh-tên-độ phân giải thất bại thuộc tính 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> 

tôi nghĩ rằng tôi đã cố gắng mà trước đó, nhưng Tôi có vẻ như tôi đã không.

+10

Nếu bạn đang đọc này cho Spring Integration 2.1+, bỏ qua-channel-name-resolution-failures đã bị loại bỏ. Bạn có thể nhận được hiệu ứng tương tự bằng cách sử dụng độ phân giải-required = "false". Xem http://static.springsource.org/spring-integration/reference/htmlsingle/#2.1-router-standardization – Joe

Các vấn đề liên quan