Java Mule聚合器-流式聚合
Mule 2.0框架中使用的集合聚合器的工作原理如下:Java Mule聚合器-流式聚合,java,soa,messaging,mule,Java,Soa,Messaging,Mule,Mule 2.0框架中使用的集合聚合器的工作原理如下: 入站路由器接收一组消息并将其拆分为多个较小的消息-每个较小的消息都会加盖与父消息对应的关联id 这些消息流经各种服务 最后,这些消息到达一个入站聚合器,该聚合器根据父消息的相关id和预期消息的数量收集消息。收到所有预期消息后,将调用聚合函数并返回结果 现在,当一个组中的消息数量相当少时,这种方法可以正常工作。然而,一旦组中的消息数量变大(约100k),则会占用大量内存来保存该组消息,等待稍后的消息到达。如果同时聚合多个组,则情况会更糟
- 入站路由器接收一组消息并将其拆分为多个较小的消息-每个较小的消息都会加盖与父消息对应的关联id
- 这些消息流经各种服务
- 最后,这些消息到达一个入站聚合器,该聚合器根据父消息的相关id和预期消息的数量收集消息。收到所有预期消息后,将调用聚合函数并返回结果
有更好的方法吗 这似乎是一种合理的方法(我无论如何都不是Mule专家),我已经阅读了所有的Mule文档,不认为有类似的东西存在(流式传输支持仅限于一些连接器和转换器-非常简单,它只传递一个InputStream)。Mule流中只有一些东西,所以您可能需要在该流中使用其他经过修改的转换器(如果您使用它们)。您只需实现聚合器,它提供一个InputStream,并在获得连续的消息序列后立即开始流式处理 但是,您描述中的一句话“……所有消息在将结果转发到端点之前都已收到”可能会令人不安。这本质上违背了流式传输的目的,除非您的意思是(在您的服务组件中)在转发(可能更小)的处理结果之前,您将跟踪您获得的一切