如何在 spring 集成中使用路由器?

how to use router in spring integration?

我在Spring集成项目中使用router,我想根据自定义表达式路由消息,为此,我定义了一个路由器和两个路由消息通道,我的路由器代码是:

<int:router input-channel="toSplitter"
                default-output-channel="aggregateResultsChannel"
                expression="@util.determine(payload)"
            >
        <int:mapping value="true" channel="mvChannel" />
        <int:mapping value="false" channel="toGet" />
    </int:router>

在我的 bean 中:

public class util {
    public static boolean determine(List<FileInfo> path) {
        for(FileInfo fileInfo:path) {
             evaluate(fileInfo);
         }
         return;//how to return here...
    }  
}

问题是我想评估每个路径对象并将每个消息路由到不同的频道,例如 list 包含 {file1,file2} , 那么评估完 file1 路由到 mvChannel 和 file2 路由到 Get chennel 怎么办?

即使没有任何<mapping>也可以配置<router>。在这种情况下,route function 必须 return MessageChannel bean 名称。

例如:


public class util {
    public static String determine(List<FileInfo> path) {
        return evaluate(path) ? "mvChannel" : "toGet";
    }  
}