Черга — це буфер між “хочу зараз” і “можу обробити”
При пікових навантаженнях черга дозволяє прийняти запити, але обробити їх контрольовано. Це особливо важливо для email/SMS, інтеграцій, білінгу, генерації документів.
1) Вибір: RabbitMQ vs Kafka (спрощено)
- RabbitMQ: задачі/джоби, маршрутизація, простіший старт.
- Kafka: стріми подій, високий throughput, довга історія подій.
2) Ідемпотентність
Повідомлення можуть прийти двічі. Обробник має бути ідемпотентним: eventId + дедуплікація/уникнення повторної побічної дії.
3) Retry policy
- Exponential backoff + jitter.
- Розділяй тимчасові помилки (timeouts) і “постійні” (валідація).
4) Dead‑letter
Після N невдалих спроб повідомлення має потрапляти в dead‑letter з причиною, щоб його можна було проаналізувати і перевідправити.
5) Backpressure і ліміти
- Обмежуй concurrency воркерів, щоб не вбити БД/зовнішні API.
- Вводь rate limit і bulkhead‑ізоляцію для інтеграцій.
Підсумок
Черги допомагають масштабуватись, коли є ідемпотентність, зрозумілі ретраї, dead‑letter і backpressure. Тоді high‑load — це режим роботи, а не катастрофа.