Встречается на 1% собеседований по Python
Как сделать чтобы заявка не отправлялась повторно в 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
интервью вопросы и ответы