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))
我的配置如下:
我在路由器内部使用 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))