Очереди и брокеры: work queue vs pub/sub, back-pressure, redelivery, at-least-once. Kafka vs RabbitMQ vs SQS.
Брокеры сообщений — асинхронный мост между сервисами. Producer пишет, broker хранит, consumer читает. Главный вопрос: work queue или pub/sub + как обрабатывать failures.
Два фундаментальных режима:
Work queue (task queue) — каждое сообщение получает РОВНО ОДИН consumer. Брокер балансирует нагрузку между воркерами. Применение: фоновые джобы, отправка email, обработка изображений.
Pub/sub (topic) — каждое сообщение получает КАЖДЫЙ подписчик независимо. Применение: events (tweet.posted → fanout по подписчикам), audit logs, cache invalidation.
Back-pressure — что делать когда producers быстрее consumers. Очередь растёт → broker должен либо отказывать новым enqueue, либо сигнализировать producer'у замедлиться. Без back-pressure: OOM, сообщения теряются.
At-least-once delivery + redelivery — стандартная гарантия. Если consumer упал до ACK, broker через visibility timeout возвращает сообщение в очередь. Consumer должен быть idempotent: одно и то же сообщение может прийти 2+ раз.
order.created).