Наблюдайте consumer lag, возраст самого старого необработанного события и разницу скоростей записи и обработки. Тренд роста часто важнее одного абсолютного значения lag.
Rebalance перераспределяет partitions между участниками consumer group. Долгая обработка может нарушить допустимый интервал poll или heartbeat, и consumer перестанут считать работоспособным.
Kafka подходит для долговременного журнала событий с повторным чтением и независимыми потребителями. RabbitMQ часто выбирают для очередей работ и гибкой маршрутизации сообщений.
Offset — позиция записи внутри partition Kafka. У каждой consumer group есть отдельно сохранённая позиция чтения; она не является глобальным номером для всего topic.
Опишите события переходов заявки, ключ partition по заявке, надёжную публикацию и идемпотентных потребителей. Консистентность между сервисами обычно достигается с задержкой, а не общей транзакцией Kafka и БД.
Опишите поток: изменения фиксируются в основной БД, событие поступает в Kafka, consumer обновляет или инвалидирует Redis. Redis здесь ускоряет чтение, а Kafka доставляет изменения.
Kafka связывает транзакционные записи и offsets потребителя, а read_committed скрывает незавершённые и отменённые транзакции. Это даёт exactly-once для согласованной обработки внутри Kafka.
Выбор RabbitMQ обычно объясняют моделью очереди задач, маршрутизацией и подтверждениями, а Kafka — потребностью в журнале событий, повторном чтении и независимых потребителях. Универсального победителя нет.
Topic в Kafka — именованный поток записей, разделённый на partitions. Producer записывает события в topic, consumer читает их; порядок задаётся внутри отдельной partition.
Выбор Redis для очереди можно обосновать простотой, имеющейся инфраструктурой и приемлемыми гарантиями. Но сравнивать нужно конкретный механизм очереди, а не только названия Redis, Kafka и RabbitMQ.
Kafka может отделить приём событий от обработки, сгладить пики и дать нескольким потребителям независимое чтение с возможностью replay. Польза зависит от того, нужны ли эти свойства конкретной системе.
Partition в Kafka — упорядоченный журнал внутри topic. Записи получают offset в своей партиции; общего порядка между разными партициями topic по умолчанию нет.