Spring集成拆分器将关键点映射到不同的通道
我有一个转换器,它返回一个映射作为结果。然后将该结果传送到输出通道。我想做的是为地图中的每个键转到不同的通道。如何在Spring集成中配置此功能 e、 g Transformer--生成-->映射 映射包含{(键1,“一些数据”),(键2,“一些数据”)} 因此,对于键1-->转到通道1 因此,对于键2-->转到通道2 等等 代码示例会很有帮助 提前谢谢Spring集成拆分器将关键点映射到不同的通道,spring,spring-integration,Spring,Spring Integration,我有一个转换器,它返回一个映射作为结果。然后将该结果传送到输出通道。我想做的是为地图中的每个键转到不同的通道。如何在Spring集成中配置此功能 e、 g Transformer--生成-->映射 映射包含{(键1,“一些数据”),(键2,“一些数据”)} 因此,对于键1-->转到通道1 因此,对于键2-->转到通道2 等等 代码示例会很有帮助 提前谢谢 GM您的处理应包括两个步骤: 将消息划分为独立处理的独立部分 将单独的消息(拆分的结果)路由到适当的通道中 对于第一个任务,您必须使用拆分器,
GM您的处理应包括两个步骤:
<channel id="inputChannel">
<!-- splitting message into separate parts -->
<splitter id="messageSplitter" input-channel="inputChannel" method="split"
output-channel="routingChannel">
<beans:bean class="com.stackoverflow.MapSplitter"/>
</spliter>
<channel id="routingChannel">
<!-- routing messages into appropriate channels basis on header value -->
<header-value-router input-channel="routingChannel" header-name="routingHeader">
<mapping value="someHeaderValue1" channel="someChannel1" />
<mapping value="someHeaderValue2" channel="someChannel2" />
</header-value-router>
<channel id="someChannel1" />
<channel id="someChannel2" />
以及拆分器:
public final class MapSplitter {
public static final String ROUTING_HEADER_NAME = "routingHeader";
public List<Message<SomeData>> split(final Message<Map<Key, SomeData>> map) {
List<Message<SomeData>> result = new LinkedList<>();
for(Entry<Key, SomeData> entry : map.entrySet()) {
final Message<SomeData> message = new MessageBuilder()
.withPayload(entry.getValue())
.setHeader(ROUTING_HEADER_NAME, entry.getKey())
.build();
result.add(message);
}
return result;
}
}
公共最终类映射拆分器{
公共静态最终字符串路由\u标头\u NAME=“routingHeader”;
公共列表拆分(最终消息映射){
列表结果=新建LinkedList();
for(条目:map.entrySet()){
最终消息消息=新消息生成器()
.withPayload(entry.getValue())
.setHeader(路由\头\名称,entry.getKey())
.build();
结果。添加(消息);
}
返回结果;
}
}
Hi Piotrek,谢谢你的回复,我会尝试一下。不客气;)如果这种方法有任何问题,请告诉我——我直接将其写入堆栈溢出,因此可能会遗漏一些内容。