Проверяет понимание различий между очередями сообщений и распределённым логом, а также умение выбирать инструмент под задачу.
SQS и Kafka решают похожую задачу — передачу сообщений между сервисами, но их модели принципиально разные. SQS — это классическая очередь: продюсер кладёт сообщение, один из потребителей его забирает и после успешной обработки удаляет. Kafka — это распределённый append-only лог, где сообщения хранятся заданное время, а потребители читают их по своим offset-ам независимо друг от друга.
from kafka import KafkaProducer
import json
producer = KafkaProducer(
bootstrap_servers='localhost:9092',
value_serializer=lambda v: json.dumps(v).encode()
)
producer.send('orders', {'id': 1, 'status': 'created'})
producer.flush() # дождаться отправкиimport boto3
sqs = boto3.client('sqs')
sqs.send_message(
QueueUrl='https://sqs.eu-west-1.amazonaws.com/123/orders',
MessageBody='{"id": 1, "status": "created"}'
)Итог: если нужна простая надёжная очередь без эксплуатации — берите SQS. Если строите событийную платформу с несколькими потребителями, повторным чтением и высоким throughput — Kafka.