Растущий consumer lag в Kafka означает, что потребитель не успевает обрабатывать сообщения с той скоростью, с которой они поступают, что может привести к задержкам и переполнению буферов.
Kafka изначально не предназначена для долговременного хранения данных, а скорее для передачи и обработки потоков сообщений с высокой пропускной способностью и низкой задержкой.
Kafka — это распределённая платформа обмена сообщениями, которая эффективно работает с несколькими инстансами приложения благодаря концепции consumer group и партиций.
В контексте Kafka термин TTA (Time To Acknowledge) обычно относится к времени, которое требуется системе или потребителю, чтобы подтвердить получение и обработку сообщения.
Для тестирования Kafka-продюсера и консюмера на Java часто используют библиотеку spring-kafka-test или EmbeddedKafka из Spring Kafka, которая позволяет поднять встроенный Kafka-брокер в памяти.
Идемпотентная отправка в Kafka достигается за счёт уникальных идентификаторов сообщений и контроля последовательности (sequence numbers) на стороне продюсера.
В Kafka транзакции обеспечивают атомарность записи сообщений в несколько партиций и топиков. Уровни изоляции транзакций в Kafka определяют, какие сообщения видны потребителю:
Kafka Streams — это библиотека для обработки потоковых данных, построенная поверх Apache Kafka. Она позволяет создавать приложения, которые читают, обрабатывают и записывают данные в Kafka в режиме реального времени.
Для распространения бизнесовых заголовков (например, x-session-id, x-client-id) по системе микросервисов через REST и Kafka можно использовать следующий подход: