如何在 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";
}
}
我在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";
}
}