البيانات الأساسيةالمهام الخلفية

قوائم انتظار المهام

قوائم FIFO لا تفقد المهام عند تعطل أحد العمال، مع منتجين ومستهلكين يعملون بالتوازي.

LPUSH/s مع pipelining، مقيس
31.6M
مهام تُفقد عند التعطل
0
استطلاع دوري
0
الخطوة 1 من 5
المنتجون يدفعون المهام

تضيف أي خدمة العمل دون انتظار المستهلكين.

جلسة توضيحيةplaying
# المنتجون يدفعون المهام
hotkv> LPUSH queue:emails "{\"to\":\"ada@example.com\",\"tpl\":\"welcome\"}"
(integer) 18

عرض متحرك بأوامر HotKV حقيقية وردود توضيحية. انقر على أي خطوة للانتقال إليها. تبقى الأوامر والردود بالإنجليزية، تمامًا كما تكتبها وتراها في HotKV.

المشكلة

يحتاج العمل في الخلفية، مثل رسائل البريد وتغيير حجم الصور وwebhooks، إلى قائمة انتظار بين الشيفرة التي تنشئه والشيفرة التي تنفّذه. وقائمة الانتظار التي تفقد مهمة عند تعطل عامل في منتصفها أسوأ من عدم وجود قائمة، لأن أحدًا لا يلاحظ أن المهمة اختفت.

كيف يتعامل HotKV معها

تمنحك القوائم قائمة انتظار FIFO بسيطة. ينقل BLMOVE كل مهمة إلى قائمة معالجة لحظة تسليمها إلى عامل، فتبقى المهمة الجارية مخزنة في مكان ما دائمًا إذا اختفى ذلك العامل. ويخدم المنتجين والمستهلكين خيوطٌ عاملة متوازية.

خطوة بخطوة

ما يحدث، أمرًا بأمر

  1. 01

    المنتجون يدفعون المهام

    تضيف أي خدمة العمل دون انتظار المستهلكين.

    LPUSH queue:emails "{\"to\":\"ada@example.com\",\"tpl\":\"welcome\"}"
  2. 02

    عامل يتسلم مهمة بأمان

    ينتظر BLMOVE حتى تتوفر مهمة، ثم ينقلها إلى قائمة معالجة في خطوة واحدة.

    BLMOVE queue:emails queue:emails:processing RIGHT LEFT 0
  3. 03

    أقرّ عند الانتهاء

    أُرسل البريد. وأُزيلت المهمة من قائمة المعالجة.

    LREM queue:emails:processing 1 "{\"to\":\"ada@example.com\",\"tpl\":\"welcome\"}"
  4. 04

    عامل يتعطل

    يتوقف العامل 2 في منتصف المهمة. ومهمته ما زالت في قائمة المعالجة، لم تُفقد.

    LRANGE queue:emails:processing 0 -1
  5. 05

    أعد إلى الانتظار وتابع

    يعيد مراقبٌ المهمة المتروكة إلى قائمة الانتظار ويتسلمها عامل آخر.

    LMOVE queue:emails:processing queue:emails LEFT RIGHT
أين يناسب

سيناريوهات من الواقع

البريد والرسائل النصية التشغيلية

يضع تطبيق الويب رسائل التسجيل والإيصالات وإعادة التعيين في قائمة الانتظار، ويرسلها فريق من العمال.

معالجة الوسائط

توضع الملفات المرفوعة في قائمة الانتظار لإنشاء الصور المصغرة وتحويل الترميز، ولا يُسقط محوّل ترميز متعطل أي ملف أبدًا.

تسليم Webhooks

توضع webhooks الصادرة في قائمة الانتظار وتُعاد محاولتها دون حجب الطلب الذي أطلقها.

مدمج

ما تحصل عليه

FIFO مع قراءات حاجبة

LPUSH مع BRPOP، ويبقى العمال خاملين حتى يصل العمل.

LPUSHBRPOP

لا مهام مفقودة

يسلّم BLMOVE كل مهمة إلى قائمة معالجة بشكل ذري.

BLMOVELREM

منتجون ومستهلكون متوازيون

يخدم المنتجين والمستهلكين خيوطٌ عاملة متوازية.

تحتاج إلى المزيد؟

للإقرارات ومجموعات المستهلكين وإعادة التشغيل، استخدم التدفقات.

XADDXREADGROUP

أسئلة شائعة

ماذا يحدث للمهمة إذا تعطل العامل؟

إذا تسلّمت المهام باستخدام BLMOVE، تبقى المهمة في قائمة المعالجة. ويستطيع مراقبٌ إعادة كل ما بقي هناك مدة طويلة إلى قائمة الانتظار.

هل يجب أن يستطلع العمال دوريًا؟

لا. ينتظر BRPOP وBLMOVE حتى تصل مهمة، مع مهلة اختيارية.

القوائم أم التدفقات؟

القوائم أبسط قائمة انتظار. وتضيف التدفقات مجموعات المستهلكين والإقرار لكل رسالة والسجل. راجع حالة استخدام تدفق الأحداث.

حالات استخدام ذات صلة

جرّبه على عبء عملك

يتحدث HotKV بروتوكول Redis، لذا يمكنك توجيه عميل موجود إليه وتشغيل هذه الأوامر نفسها.