Для начала давайте предположим, что все остальное в вашем примере имеет параллелизм, равный единице, и только функция map будет работать параллельно.(Хотя для этого на самом деле это нужно было бы где-то настроить; параллелизм по умолчанию выше единицы.)
Давайте также предположим, что ваш потребитель Kafka читает одну тему с одним разделом, и выспрашивая, как реализовать параллельное преобразование, которое сохраняет порядок, который присутствовал во входных данных.
С этими допущениями, ответ заключается в том, что вы мало что можете сделать.Между двумя экземплярами оператора карты есть гонка, и непараллельный приемник будет чередовать эти два входящих потока произвольным образом.
Если записи потоков помечены каким-либо образом, скажем, по возрастаниювременные метки или идентификаторы, тогда вы можете гипотетически ввести некоторую буферизацию и восстановить исходный порядок, либо в пользовательском приемнике, либо в непараллельной функции RichCoMap между вашей картой и операторами приемников.
Если, с другой стороны, ваш источник каким-либо образом разделен на части или имеет ключевые ключи, и вам нужно только поддерживать или устанавливать порядок на основе ключа, то есть лучшие ответы.