繁体   English   中英

Spring Integration Aggregator或Router正确的模式?

[英]Spring Integration Aggregator or Router the right pattern?

我有一个szenario,乍一看似乎非常适合使用Spring Integration Aggregator:

目前生成了大量的PDF报告。 这些通过Printrequests打印到JMS队列。 打印服务器接受带有打印请求的客户端套接字。

为了在负载方面实现某种“公平”,我们希望聚合同一台打印机的打印请求。 然后将聚合请求发送到打印服务器。 我们对聚合请求具有完整性标准,基本上是为“批处理”生成的pdf数量,并且每个“批处理”请求的PDF报告也具有唯一密钥。 然后,聚合的请求将通过服务激活器通过相同的客户端套接字“发送”到打印服务器。 所以基本上我们采用Spring Integration Documentation中描述的方法。

问题是:报告只会在生成“批次”的最后一个pdf报告时开始打印,这似乎会产生相当大的瓶颈。

理想情况下,我们可以在MessageGroup的第一条消息到达时立即开始打印,并有效地聚合打印请求的结果。

我一直在想用自定义的MessageStore实现这个目的

public void add(Message<?> messageToAdd)

方法实现附加逻辑调用打印机服务器并实际聚合服务器的响应。 像“活跃”的MessageStore之类的东西。

但是自定义MessageStore的add方法可能是一个“大”的瓶颈......阻止每个添加到“活动”的MessageStore ......而且看起来也是错误的metapher:Store vs Processing。

聚合器是否适合这些要求?

或者我应该更多地采用Dynamic Ftp Spring Integration Example中描述的动态路由器通道的方法

对于每个“批量”打印请求,有一个子/父应用程序上下文? 在那里,childs applicationcontext的生命周期对我来说并不是那么清楚。

理想情况下,我将能够使用JMX管理所有上下文 - 子项和父项,如Spring Integration的监视示例所述

看起来你有一些奶油猫悖论

您希望通过聚合请求最小化网络负载,但同时您希望从聚合器发送每个项目以进行打印。

你应该自己决定你的目标是什么。

也许您只需要一个逻辑router ,该逻辑将基于某个key委托给特定套接字的正确通道发送到打印服务器?

对不起抱歉:你的问题不明确......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM