سؤال

هل هناك إطار عمل جيد الوزن ل Java يوفر نمط النشر/الاشتراك؟

بعض الميزات المثالية

  • دعم الأدوية
  • تسجيل العديد من المشتركين إلى ناشر
  • API في المقام الأول واجهات وبعض التطبيقات المفيدة
  • في الذاكرة البحتة ، لا تضمن الثبات والمعاملات المطلوبة.

أعرف عن JMS لكن هذا مبالغة في حاجتي. البيانات النشر/المشتركة هي نتيجة عمليات مسح لنظام الملفات ، حيث يتم تغذية نتائج المسح إلى مكون آخر للمعالجة ، والتي تتم معالجتها بعد ذلك قبل تغذيتها إلى آخر وما إلى ذلك.

تحرير: كل ذلك في نفس العملية. PropertyChangelistener من Beans لا يقطعها تمامًا ، نظرًا لأنه يقوم بالإبلاغ عن التغييرات على الخصائص ، بدلاً من نشر عناصر محددة. يمكنني shoehorn proprtychangelistener للعمل من خلال وجود خاصية "كائن منشور آخر" ، وهكذا تم نشر خاصية. لا يدعم PropertyChangelisteners الأداء الأولي ، ويتم ترسيخهم في دلالات تغيير الممتلكات ، بدلاً من النشر/الاشتراك الخالص. سيكون نمط Java.Util Observer/الملاحظة جيدًا ، لكن Oberver هو فئة ملموسة.

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

المحلول

JMS خفيفة أو ثقيلة كما تقوم بتكوينه. نستخدم على سبيل المثال Hornetq في مشروع واحد مع قائمة انتظار في الذاكرة. من السهل الإعداد ، ولا يحتاج إلى أي تكوين يعتمد على JNDI وهو سهل الاستخدام حقًا.

أعتقد أن JMS كأبي واجهة برمجة تطبيقات للحانة/SUB سهلة كما يحصل. (وليس أسهل ؛)

نصائح أخرى

يبدو أن هذا يناسب المتطلبات:

EventBus من مكتبة Google Guava - "نشر التواصل على غرار الاشتراك بين المكونات دون مطالبة المكونات بالتسجيل بشكل صريح مع بعضها البعض". يمكن أن يكون أيضا Asynceventbus التي سوف ترسل الأحداث على موضوع آخر.

بعض الخيارات الإضافية للنظر في:

  1. إذا كان في نفس العملية ، فمن الممكن مراقب يمكن استخدام النمط. يمكن للمشتركين إضافة المستمعين وتلقي إخطارات الأحداث. يمكن ملاحظته هو بالفعل جزء من Java API.

  2. FFMQ هو جافا كاملة ، وزن خفيف, ، Fast JMS 1.1 تطبيق قائمة الانتظار.

نظرًا لأنك تستخدم الربيع ، لا أعرف ما إذا كنت تدرك أن الربيع له خاص به إطار حدث خفيف الوزن. يتم استخدامه في المقام الأول في الإطار نفسه ، لكنه قابل للاستخدام تمامًا بواسطة رمز التطبيق.

بشكل افتراضي ، إنها حانة/sub متزامنة ، ولكن يمكنك أن تجعلها غير متزامنة باستخدام ApplicationEventMulticaster.

أظن جمل هو أيضا مرشح جيد. خاصة مع النشر نمط الاشتراك

يمكن تضمين الجمل وخفيفة الوزن. يقترح أنماط تكامل المؤسسات - العديد من الأدوات المفيدة للتكامل ، داخل التطبيق أو حتى مع الجهات الفاعلة الأخرى (وبالتالي "التكامل").

يقارن تكامل الربيع لكن IMO أكثر اكتمالا.

إذا كنت تعبر حدود العملية ، فسيتم تكبد درجة ما من "الوزن". لماذا تقول أن JMS هو الوزن الثقيل؟ واجهة برمجة التطبيقات بسيطة للغاية؟ على سبيل المثال ، هناك تطبيقات خفيفة الوزن ، على سبيل المثال نص الارتباط تكاليف أثقل مثل هذا الثبات والمعاملات اختيارية.

ما الذي تحتاجه أخف من هذا؟

بوب لي لديه QueueFile الفصل في http://snipt.org/gwm/ قد تجدها مثيرة للاهتمام. إنه قائمة انتظار بسيطة بسيطة ويمكن استخدامها من قبل العديد من المستهلكين. يبدو أنك لا تحتاج إلى ثبات ، ولكن بما أن الأمر برمته خفيفة للغاية ، فقد لا يزال من المفيد.

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