【发布时间】:2015-02-15 04:49:06
【问题描述】:
我是 Spring Integration 的新手,想知道 Spring Integration 中是否存在一个组件,它可以帮助我加入 2 个通道的结果。我知道答案是聚合器,但是我不希望将消息合并为 1 条消息,但是当来自两个通道的消息都到达时,它们应该流向下游组件。这是一种循环障碍案例。
谢谢你 阿迪
【问题讨论】:
我是 Spring Integration 的新手,想知道 Spring Integration 中是否存在一个组件,它可以帮助我加入 2 个通道的结果。我知道答案是聚合器,但是我不希望将消息合并为 1 条消息,但是当来自两个通道的消息都到达时,它们应该流向下游组件。这是一种循环障碍案例。
谢谢你 阿迪
【问题讨论】:
aggregator 的默认行为是将已发布的消息组聚合成一条消息,并在负载中包含一个集合。
您可以在聚合器之后添加splitter 以再次破坏它们。
但是,如果聚合器输出 MessageGroupProcessor 生成 Collection<Message<?>,则每条消息都会一个接一个地发布。
您无法使用 XML 配置连接自定义 MessageGroupProcessor,但您可以在 Java 中进行配置...
AggregatingMessageHandler aggregator = new AggregatingMessageHandler(new FooProcessor());
...
private class FooProcessor implements MessageGroupProcessor {
@Override
public Object processMessageGroup(MessageGroup group) {
return group.getMessages();
}
}
【讨论】: