آیا فراخواننده همین حالا پاسخ میخواهد؟
فراخوانی همزمان وقتی مفید است که تصمیم فعلی به اطلاعات سرویس دیگر وابسته باشد. در مقابل، تأخیر و دسترسپذیری آن سرویس هم وارد مسیر درخواست میشود.
پیام زمانی مناسب است که قابلیت دیگر بتواند مستقل واکنش نشان دهد. ارسال پیام به معنی تمام شدن پردازش آن نیست.
پیامرسانی مرز شکست را جابهجا میکند
واسط پیام میتواند طول عمر تولیدکننده و مصرفکننده را مستقل کند، اما شکست را حذف نمیکند. تأیید دریافت، تحویل تکراری، تلاش مجدد و پیامهای پردازشناپذیر به طراحی آگاهانه نیاز دارند.
تا حد ممکن پردازش مصرفکننده را برای تکرار امن طراحی کنید. تلاش مجدد بدون idempotency ممکن است اثر کسبوکار را دوباره اعمال کند.
وضعیت قابل مشاهده را روشن کنید
برای کار غیرهمزمان، وضعیت در انتظار، کاملشده و ناموفق را تعریف کنید. برای فراخوانی همزمان، زمان انتظار و رفتار هنگام نامشخص بودن نتیجه را مشخص کنید.
RabbitMQ و gRPC دو نام قابل جایگزین برای یک طراحی نیستند. ابتدا جریان کار را مدل کنید، سپس قرارداد و ابزار انتقال را انتخاب کنید.
منبع برای مطالعه بیشتر
مستندات و استاندارد مرجع