Вы увидите значительное улучшение производительности, если вы сможете хранить много сообщений вместе в одном файле потока. Например, допустим, вы потребляете 1 миллион сообщений от Kafka и имеете по одному сообщению на файл потока, это означает, что 1 миллион записей в репо файла потока, 1 миллион событий провенанса, 1 миллион объектов в куче и т. Д. Если у вас было 1 Потоковый файл с 1 миллионом сообщений, это будет 1 запись в репозиторий потокового файла, 1 событие провенанса, 1 объект в куче (не содержимое).
Когда у вас есть много сообщений в одном поточном файле, вы не можете извлечь значение поля в атрибут, поскольку, как вы указали, для каждой записи будут разные значения для поля. Вы можете обойти это, используя процессоры записей, которые позволяют обрабатывать записи на месте. Например, вместо EvaluateJsonPath + RouteOnAttribute вы можете просто использовать PartitionRecord для разделения сообщений на основе значения поля.