Заказчик Kafka гарантированно будет заказан в соответствии с контрактом API Kafka.
Однако любые внешние выходы, на которые вы производите запись, могут сработать не по порядку.
На самом деле я не думаю, что это проблема для большинства последующих систем ... Если вы, например, вставляете данные в базу данных, вы можете выполнить повторную сортировку по времени.Если у вас есть TSDB, то вы эффективно «засыпаете» данные.
Поскольку вы выводите данные на консоль, это блокирующий вызов вашего ввода-вывода и, таким образом, чтение пакета событий Kafka (по порядку) из одного потока, десериализация, а затем запись в консоль в другом потоке(в идеале для того, чтобы они были обработаны Spark, но не мешало бы вызвать сортировку SparkSQL desc($"timestamp")
здесь).Как только это будет завершено, смещения Kafka могут быть переданы, и вы продолжите последовательное чтение с Kafka (в порядке смещений) ... Все эти события не должны иметь таких условий гонки, в которых они были бы не в порядке.