قائمة انتظار الرسائل: هل يمكننا تشغيل الأحداث عندما تدخل رسالة في قائمة الانتظار؟

StackOverflow https://stackoverflow.com/questions/4255950

سؤال

في العمل ، نناقش ما إذا كان سيتم تنفيذ قائمة انتظار الرسائل لتطبيق PHP أم لا. حاليًا ننظر إلى Apache's ActiveMQ. شيء واحد لا نوضحه تمامًا هو ما إذا كان من الممكن تشغيل عملية بناء على رسالة تصل إلى قائمة انتظار أم لا.

يبدو أن الأدبيات التي وجدناها حتى الآن تشير إلى أن قوائم انتظار الرسائل هي آلية قائمة على السحب: تعمل العملية بانتظام (إما كخفي أو كرون) ، وتسحب رسائلها الواردة من قائمة الانتظار. هل من الممكن تحويل هذا إلى آلية دفع؟ وهذا هو ، هل هناك طريقة لجعل قائمة انتظار الرسائل تبدأ بالفعل طلب HTTP (أو عملية) عند وصول الرسالة؟ أحد الخيارات التي وجدناها هو نموذج النشر/الاشتراك ، ولكن هذا يتطلب تشغيل تطبيق PHP الخاص بنا في حلقة لا حصر لها للحفاظ على اتصال مفتوح (TCP) إلى مثيل ActiveMQ ، والذي يبدو وكأنه جزء من kludge.

فإن أي مدخلات يحظى بتقدير كبير.

هل كانت مفيدة؟

المحلول

الحل الواضح هو السماح للناشر ببدء طلب HTTP مباشرة بعد تخزين الرسالة ، ولكن هذا يطرح السؤال ، لماذا إذن تستخدم قائمة انتظار الرسائل؟

إن وجود مجموعة من المستهلكين يستمعون إلى قائمة انتظار والقيام بعملهم مع وصول الرسائل ، فهو ليس تصميمًا جيدًا وقابل للتطوير. (على الرغم من أنني أوافق على أن تشغيل عملية PHP في حلقة لا نهائية لها سلبياتها)

لماذا اخترت قائمة انتظار الرسائل بدلاً من قاعدة بيانات تخزن الرسائل؟ يمكن أن يقوم "المنتج" بتخزين الرسالة كصف في جدول ثم تشغيل "المستهلك" باستخدام PK للرسالة.

نصائح أخرى

فكر في إنشاء مسار جمل يسحب الرسائل من قائمة الانتظار (مكون JMS) وإعادة التوجيه إلى نقطة نهاية HTTP (مكون HTTP). يمكنك حتى أن تقرر استضافة مسار الإبل في عملية وسيط ActiveMQ - إنشاء نوع من وسيط التوجيه الذكي. يجعل ActiveMQ هذا سهلاً عن طريق تجميع مكتبات Camel Core في توزيع ActiveMQ.

فيما يلي وظيفة حديثة ذات صلة / ذات صلة:

HTTP Post من ActiveMQ باستخدام الجمل

مفهوم التصميم الخاص بك للتطبيق لمراقبة قائمة الانتظار هو طريقة الصناعة لتشغيل تطبيق خارجي لتشغيله. ألقِ نظرة على IBM WebSphere "تطبيقات مراقبة المشغل". في تنفيذها ، يمكن أن يكون لديك شاشات زناد متعددة لبدء تطبيقات معالجة الرسائل في قائمة انتظار ، بحيث يتم توسيع نطاقها بشكل جيد للغاية مع تشغيل مراقبة المشغل على الخادم ، يتم تثبيت التطبيق لديك العديد من خوادم التطبيق إذا لزم الأمر).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top