Коллекция агрегатор используется в 2.0 рамках Mule работает немного, как это:Mule агрегатор - Streaming Aggregation
Входящее маршрутизатор принимает коллекцию сообщений и разбивает его на несколько более мелких сообщений - каждый меньше сообщения получить штамп с корреляционной идентификатор, соответствующей родительским сообщением
Эти сообщения проходят через различные услуги
Наконец эти сообщения поступают на входящем агрегаторе, что собирает сообщения на основе идентификатора корреляции родительского сообщения и количества ожидаемых сообщений. После того как все ожидаемые сообщения были получены, вызывается функция агрегации и возвращается результат.
Теперь это нормально работает, когда количество сообщений в группе достаточно мало. Однако, как только количество сообщений в группе становится огромным ~ 100k, тогда большая часть памяти привязывается к группе сообщений, ожидающих прибытия более поздних сообщений. Это ухудшается, если одновременно группируются несколько групп.
Путь к этой проблеме заключается в реализации потокового агрегатора. В моем случае использования я, по сути, суммирую различные сообщения на основе ключа, и это можно сделать без необходимости одновременного просмотра всех сообщений в группе. Я хотел бы только знать, что все сообщения были получены до отправки результата на конечную точку.
Это звучит как разумное решение проблемы?
Это уже реализовано где-то в Муле?
Есть ли лучшие способы сделать это?