Spring 集成:如何从 util:map 获取价值到 SI 的路由器中

Spring Integration: How to get value from util:map into SI's Router

我的配置如下:

我在路由器内部使用 SpEL 从地图中获取值。

    <util:map id="routeConfig">
        <entry key="Default" value="not configured" />
        <entry key="GB22XXX" value="LON" />       
        <entry key="AEADXXX" value="ME" />
        <entry key="HBXXXX" value="ME" />
        <entry key="EBHBXBAO" value="ME" />
</util:map>

<router input-channel="InputRoutingChannel" default-output-channel="testOutputChannel"  expression="@routeConfig.get('payload.getMsgHeader().getSourceSystem().substring(4, 12)')">
        <mapping value="LON" channel="MarshallerOutputChannel_lonme" />
        <mapping value="ME" channel="MarshallerOutputChannel_me" />
</router>

您的问题在这里:

expression="@routeConfig.get('payload.getMsgHeader().getSourceSystem().substring(4, 12)')

既然你处理了运行时Message,你真的不需要包装到literal。因此给你的答案是:

expression="@routeConfig.get(payload.msgHeader.sourceSystem.substring(4, 12))