Вопрос проверяет опыт работы с kafka.
Отправляйте сообщения с ключом пользователя и используйте compacted topic. Механизм лог-компакции оставляет последнее сообщение на ключ, удаляя старые версии.
Механика:
Message key = user_id;
Топик с cleanup.policy=compact (можно совместить compact,delete);
Компакция периодически сохраняет только последний оффсет для каждого ключа.
Настройки (концептуально):
на стороне брокера/топика: cleanup.policy=compact;
продюсер: всегда отправляет ключ user_id.
Замечания:
консумеры всё равно увидят всю историю до компакции;
для «строго последнего» при чтении — используйте KTable/чтение последнего состояния.
Вывод: log compaction — способ хранить последнее состояние per-key в Kafka.