我想评估一下spring集成是否适合我们当前的需求。
我们将收到一个包含 100 万笔交易的输入流(让我们考虑下面代码中的 A 是一笔交易。一笔交易的大小将为 4KB)。
<A>
</A>
<A>
</A>
....
<A>
</A>
我们会根据一些条件将交易拆分成多条记录( )。
我们将聚合每个组并将其推送到另一个系统。
您能帮我理解以下内容吗?
整个过程是基于内存的,还是我们可以选择将其存储在文件中?我们计划在K8S中运行。容器的最大大小为 1GB。我们预计每分钟至少有 20 笔交易。我担心如果我们使用内存操作,最终会出现性能或服务中断问题。
是否必须使用聚合器?因为我们将使用过滤器来隔离文件。
如果我使用队列消息通道,则任何两个事务都不会使用相同的队列对象。这是正确的吗?
聚合器对于您的用例来说实际上并不是强制性的。即使您为聚合器使用持久性
MessageGroupStore
,最终当您释放组时,您也会将所有消息加载回内存。
是的,我认为您可以选择将结果数据收集到单个文件中。请参见
FileWritingMessageHandler
和 FileExistsMode.APPEND
。因此,所有拆分器记录将在流程结束时写入同一文件。我认为您甚至可以为聚合器提出一个策略,将已发布的组作为单个回复消息写入文件。
我不确定你关于
QueueChannel
的问题,但你的假设可能是错误的。它只是端点之间的通道,因此发送到它的所有消息都将使用相同的队列对象。我会研究 ExecutorChannel
,而不是能够并行处理分割的数据。