Подозреваю, что так или иначе на каждого пользователя придется заводить топик, за этим делом надо будет как-то следить (например, оценивать объем), сложно адресовать отдельную запись (да, я уверен, что такая необходимость рано или поздно вылезет), и это всё просто чтобы выполнять задачи, которые всегда выполнялись обычным хранилищем.
Ну и кафка конечно не обычный message queue, но ожидать что в какой-то момент данные грохнет инженер, потому что он думает, что очереди забились и там уже стылые сообщени, вполне можно.
Не, заводить топик под каждого пользователя не хочу. В описанной мной схеме это работает примерно так же как хэш мапа в Java. Продюсер использует id пользователя чтобы определить партишен, куда отправить сообщение(аналогия с бакетом в мапе). Консьюмер также определяет по id партишен, из которого читать сообщения пользователя. Т.о. образом в партишене могут быть сообщения для 0..N пользователей.