Встречается на собеседованиях • сегодня
Как спроектировать приложение Kafka для обработки сообщения строго один раз
Для обеспечения обработки сообщений строго один раз в Kafka нужно комбинировать идемпотентность продюсера, транзакции и дедупликацию на стороне консьюмера.
Идемпотентный продюсер (enable.idempotence=true) гарантирует, что сообщение будет доставлено ровно один раз даже при ретраях:
java
props.put("enable.idempotence", "true");Транзакции позволяют атомарно записывать в несколько партиций:
java
producer.initTransactions();
producer.beginTransaction();
producer.send(record1);
producer.send(record2);
producer.commitTransaction();Дедупликация на консьюмере:
- Хранить обработанные messageId в БД
- Перед обработкой проверять их наличие
- Использовать
isolation.level=read_committedдля чтения только закоммиченных сообщений
Пример консьюмера:
java
if (!isProcessed(message.id())) {
process(message);
markAsProcessed(message.id());
}Важно: такой подход требует устойчивого хранилища для дедупликации и увеличивает накладные расходы.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы