Messaging وقتی معنا دارد که کار را از درخواست کاربر جدا کنید: ایمیل، تبدیل ویدیو، embedding، همگامسازی موجودی، یا fan-out به چند سرویس.
RabbitMQ
عالی برای صف کار (job queue)، retry و routing ساده. برای تیمهای کوچک شروع رایج و قابل فهم است.
Kafka / Redpanda
وقتی تاریخچه رویداد، throughput بالا و چند مصرفکننده مهم است. پیچیدهتر است؛ برای analytics و pipelineهای AI enrichment عالی است.
NATS / JetStream
سبکتر از Kafka برای میکروسرویسها. وقتی «کافکا سنگین است» گزینه جدی است.
الگوهای واجب
- Idempotent consumer
- Dead letter queue
- Schema یا قرارداد پیام
- Observability روی lag صف
قانون طلایی
اگر یک worker و یک دیتابیس کافی است، Kafka نیاورید. وقتی دو یا چند مصرفکننده یا بار ناهموار دارید، messaging سرمایهگذاری است نه مد.
در محصولات ویدیویی و فروشگاهی ما، صف معمولاً اول برای پردازش پسزمینه میآید؛ استریم رویداد مرحله بعد است.