Упорядочивание данных в Kafka гарантируется только в разделе topi c. Если вы гарантируете, что все данные (создание и удаление) для клиента C1 попадают в один раздел (например, выбрав тип идентификатора клиента в качестве ключа сообщения Kafka), вы гарантируете, что созданные данные будут сохранены и, следовательно, потреблены до удаление.
Однако проблема, которую я вижу здесь, заключается в том, что у вас есть два разных производителя. Так что всегда есть шанс, что удаление будет записано в топи Kafka c перед созданием (из-за каких-либо проблем в «создателе»).
В идеале, у вас есть один единственный производитель покрывая как создание, так и удаление (если возможно). Я также предлагаю объединить двух потребителей в одну ConsumerGroup.