Seniorسختی 4 از ۵· در 40٪ مصاحبههای این حوزه پرسیده شده
چرا Functionهایی که با Trigger صف اجرا میشوند باید Idempotent باشند؟
☆نشان کردنپاسخ کوتاه
چون در سناریوهایی مثل خطای موقت یا Retry، ممکن است یک پیام بیش از یکبار پردازش شود.
پاسخ کامل
سیستمهای پیامرسانی معمولاً تضمین «حداقل یکبار تحویل» (At-least-once) میدهند، نه دقیقاً یکبار. اگر پردازش یک پیام قبل از تأیید (Ack) با خطا مواجه شود، همان پیام دوباره تحویل داده میشود. Function باید طوری نوشته شود که اجرای دوباره همان پیام، نتیجه نهایی را خراب نکند (مثلاً با بررسی شناسه پردازششده قبل از ثبت مجدد).
نکته مهم
منبع کامل موضوع: Azure Queue storage trigger — Microsoft Learn.
اشتباه رایج
❌ فرض قطعی «هر پیام دقیقاً یکبار پردازش میشود» بدون هیچ محافظت در برابر اجرای تکراری.
