Встречается на собеседованиях • сегодня
Как сделать чтобы заявка не отправлялась повторно в Kafka если не обновился статус что event был отправлен
Для предотвращения повторной отправки сообщений в Kafka можно использовать идемпотентного продюсера или реализовать механизм дедупликации.
Идемпотентный продюсер (Kafka >= 0.11):
python
from kafka import KafkaProducer
producer = KafkaProducer(
bootstrap_servers=['localhost:9092'],
enable_idempotence=True, # Включает идемпотентность
acks='all',
retries=3
)Дедупликация на стороне продюсера:
- Сохранять
event_idв БД перед отправкой - Проверять статус перед повторной отправкой
python
import hashlib
def get_event_id(data):
return hashlib.md5(str(data).encode()).hexdigest()
event_id = get_event_id(data)
if not is_event_sent(event_id): # Проверка в БД
producer.send('topic', value=data)
mark_as_sent(event_id) # Обновить статусВажно:
- Идемпотентность гарантирует "ровно одну" доставку только в пределах одной сессии продюсера
- Для кросс-сессионной гарантии нужен внешний механизм (например, БД)

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