Apache Kafka – это платформа потоковой передачи, которую можно использовать для быстрой обработки большого количества событий. Строго говоря это не [Брокер сообщений](Брокер%20сообщений.md), а распределенный реплицированный журнал фиксаций изменений (commit log).
Где встречается потребности в потоковой обработке:
Помимо различных семантик доставки, есть еще одно общее преимущество использования брокера сообщений – если приложение потребитель потерпело аварию или остановлено для технического обслуживания, то производитель может не ждать, пока его сообщение будет обработано. Когда потребители возобновят работу и вернутся в сеть, они смогут продолжить с того места, на котором остановились, и обработать ожидающие сообщения.
Платформа Kafka изначально была ориентирована на работу с несколькими потребителями, - модель Publish & Subscribe. Это означает, что приложение, читающее сообщение из брокера сообщений, не делает это сообщение недоступным для других приложений, которые также могут захотеть его получить и использовать. Consumer сам следит за смещением offset, то есть он сам следит за тем, какие сообщения он уже прочитал.
Сообщение, также называемое записью, является основной частью данных, проходящих через Kafka. Сообщения – это представление ваших данных в Kafka. Каждое сообщение имеет отметку времени, значение и необязательный ключ. При желании также можно добавлять свои заголовки
- Позволяет повторно считать данные с любого места. Например, мы выполняли какую-то бухгалтерскую логику и поняли, что в приложении была допущена ошибка в формуле расчета. Мы можем удалить невалидные данные, поправить формулу и заново считать все старые сообщения.