在騾2.0架構所使用的收集聚合器的工作原理有點像這樣:騾子聚集 - 流聚集
入站路由器需要的信息的集合,將其分解成許多小的消息 - 每個較小的消息得到印有對應於父消息的相關標識
這些消息流經各種服務
最後這些消息在入站彙集到這基於父消息的相關ID和期望消息的數量來收集消息。一旦接收到所有期望的消息,則調用聚合函數並返回結果。
現在,當一個組中的消息數量相當小時,它可以正常工作。然而,一旦一個組中的消息數量變得很大~100k,那麼大量的內存就會束縛在等待稍後消息到達的消息組中。如果有多個組在同一時間彙總,則情況會變得更糟。
解決此問題的一種方法是實現流聚合器。在我的使用案例中,我基本上總結了基於密鑰的各種消息,這可以在不必同時查看組中所有消息的情況下完成。我只想知道在將結果轉發到端點之前已收到所有消息。
這聽起來像是一個合理的解決方案?
這是否已經在Mule的某處實施?
有沒有更好的方法來做到這一點?